Pixomatic SDK Features
RAD は、Pixo のバージョン 3 (DX9 レベルのラスタライザ) とバージョン 2 (DX7 レベルのラスタライザ) の 2 つのバージョンのライセンスを提供します。それぞれのバージョンについて、以下で説明します。
Pixomatic 3 の機能
- DX9 と完全互換
- 頂点シェーダおよびピクセル シェーダ 2.0/3.0 の完全サポート
- すべてのテクスチャ形式およびフィルタのサポート (DXT テクスチャおよびバイリニア/トライリニア/異方性フィルタを含む)
- 選択可能な 4X MSAA アンチエイリアス
- 32 ビット バージョンおよび 64 ビット バージョン
- SSE 最適化された頂点およびピクセル シェーダ
- SSE2 の使用 (可能な場合)
- 64 ビット モードで使用される 16 本の汎用レジスタおよび 16 本の XMM レジスタ
- 最大 16 コアのマルチスレッドの自動サポート
Pixomatic 3 の要件
- SSE 機能を含む x86 互換プロセッサ
- Microsoft Windows (32 ビットまたは 64 ビット)
Pixomatic 2 の機能
ピクセル シェード- 完全にプログラム可能な 3 つのステージ (2 つのテクスチャをサポート)
- サポートされるステージ操作: modulate、add、add signed、lerp、multiply-add、select、および dot3
- サポートされるステージ入力: texture、texture、diffuse、specular、stage constant、global constant、zero、temp、および current
- ステージ入力は反転/複製可能
- ステージ出力の拡大縮小および一時出力先への出力が可能
- ステージごとに独立してプログラム可能な RGB およびアルファ チャンネル (dot3 以外)
- 追加のスペキュラ追加ステージ
- フラットまたはグロー拡散色の調節
- フォグの線形補間
- 独立したソースと出力先フレーム バッファ ブレンドの完全な標準セット。この結果を add、subtract、reverse subtract、min、または max を使用して組み合わせることが可能。または、ユーザー定義のブレンド用コードをピクセル パイプラインに直接結合可能
- すべてのピクセル計算は 32 ビット (色要素ごとに 8 ビット)
- 16 または 24 ビット z バッファ (7 つの比較モードと z スケール)
- alpharef 値に対するアルファ テストの完全セット
- ステンシル テスト (7 つの比較モード)
- ステンシル レンダリング (6 つの z-pass モードと 6 つの z-fail モード、シングルパス ステンシル シャドウのサポート)
- 高速の早期終了 z およびステンシル表示の決定 (複雑なオブジェクトの境界ボックスのプリテストに効果的)
- ピクセル カウント
- サブピクセル補正ラスタライゼーション
- 機能は任意の組み合わせが可能 (ただし、ステンシル レンダリングとピクセル レンダリングの組み合わせを除く)
- Z バイアス
- 8888 およびパレット化フォーマット
- ラップおよびクランプ ボーダー モード
- 最大 4096 x 4096 のテクスチャ サイズ
- サブテクセル補正
- パースペクティブ補正
- ポイント、バイリニア、および高速 2 および 4 ポイント平均化フィルタ
- 三角形単位のミップマッピング
- ミップマップの詳細レベル バイアス
- テクスチャ変形
- 投影および非投影の画面 Texgen
- テクスチャ ステージごとに個別に有効化および指定できる投影テクスチャ
- 三角形リスト、三角形ストリップ、三角形ファン、四角形リスト、ポリゴン、ポイントスプライト、ラインリスト、ラインストリップ
- ポイントスプライトは深さによって自動的に拡大縮小可能
- インデックス付きストリーム、インデックスなしストリーム、プリミティブ インターフェイスの開始/終了
- 最大 8 つのストリーム (すべて全面的に設定可能)
- 最高の効率を実現し、DX および OpenGL から簡単に移植できるように設計されたカスタム API
- ビューポートでの変換、投影、および拡大縮小
- 三角形単位のコールバック
- 頂点単位のコールバックでは、Texgen やライトなどのユーザー定義の頂点シェードが可能
- トップダウンまたはボトムアップのスクリーン座標系
- バックフェイス カリング
- 頂点フォグ (デバイス空間、カメラ空間、w カメラ空間の計算をサポート)
- 動的に設定可能なビューポート
- 同次クリッピング
- ワイヤフレーム
- 完全ラスタライゼーション パイプラインから描画されたビルボード テキスト
- 4 倍バイリニア フィルタリングされたアンチエイリアス
- 2 倍または 4 倍バイリニア フィルタリングまたはポイント サンプルされたズーム
- バイリニア フィルタリングまたはポイント サンプルされたストレッチ BLT
- フロント バッファへの最適化された BLT (GDI または DirectDraw が高速化されているかどうかを検出)
- 32、24、および 16 ビット フロント バッファのサポートと 16 ビットへのディザリング (565 および 1555)
- フィルおよびクリアのサポート
- フィルおよび BLT はアルファ ブレンド可能
- ピクセル シェード パイプラインは、最適化された MMX コードであり、オンザフライでコンパイルされ、実質的にすべての補間値および中間値を登録します。
- ジオメトリおよび頂点シェード パイプラインは、MMX、SSE、および 3DNow に最適化されています。
- SSE、SSE2、3DNow が存在する場合は自動的に使用されますが、必須ではありません。
Pixomatic 2 のパフォーマンス
ラスタライザのパフォーマンスは、有効な構成およびデータ セットが非常に多いため明確に示すことは困難ですが、以下に Pixomatic 2 のおよそのパフォーマンスを数値で示します。
フィル レート
フィル レートのテスト ケース: 2 つの 256 x 256 テクスチャを含むマルチテクスチャ、グロー シェード、16 ビット z バッファ (z 比較および z 書込を有効化)、640 x 480 の 1 つの四角形 (2 つの三角形) を描画、32 bpp ウィンドウ。
トライアングル レート
トライアングル レートのテスト ケース: 1 つの 256 x 256 テクスチャ (PIXO_TEXGEN_PROJECTED_XYZ1 で生成されたテクスチャ座標)、グロー シェード、16 ビット z バッファ (z 比較および z 書き込みを有効)、合計 27,296 個の三角形を含む 77 個のインデックス付きメッシュから構成されるモデルを描画 (このうちの 12,841 個は、ゼロ以外の領域のフロント フェーシング)。トライアングル レート計算の目的で、カリングされた三角形がカウントされる。ターゲット ウィンドウは 640 x 480、32 bpp。モデルの境界ボックスがウィンドウの 5 % を占める。スクリーンへの BLT ではなく、レンダリング時間だけがカウントされる。三角形はクリップされない。
変換および投影レート
変換および投影レートのテスト ケース: トライアングル レートのテストとほぼ同じ。ただし、すべての三角形がカリングされ、ラスタライゼーションが実行されないように、モデルをビューアから遠くに移動。
Quake II timedemo 640 x 480、32 bpp、ポイント サンプル
スクリーンへの BLT とすべての描画時間を含む。
Quake II timedemo 640 x 480、32 bpp、バイリニア ベース、
高速 2 ポイント ライトマップ
スクリーンへの BLT とすべての描画時間を含む。
Quake II timedemo 640 x 480、32 bpp、完全バイリニア
スクリーンへの BLT とすべての描画時間を含む。
パフォーマンス テストで使用されたプラットフォーム
- PIII/733 Mhz: 830 MB/秒のメモリ帯域幅および 2.2 GB/秒の帯域幅、256 KB L2 キャッシュ
- Athlon/1.8 GHz (3DNow および SSE): 1.3GB/秒のメモリ帯域幅および 3.5 GB/秒の帯域幅、256 KB L2 キャッシュ
- P4/2.2 GHz: 2.0 GB/秒のメモリ帯域幅および 9.3 GB/秒の帯域幅、512 KB L2 キャッシュ
- P4/3.3 Ghz: 3.0 GB/秒のメモリ帯域幅および 13.9 GB/秒の帯域幅、512 KB L2 キャッシュ
Pixomatic 2 のサイズ
- Pixomatic 2 DLL のサイズは 255 KB です。Pixomatic 2 は、それに加えて 1 つの 4 KB の割り当ても実行します。他のすべてのメモリ (ピクセル バッファ、z バッファ、テクスチャなど) は、呼び出し元のアプリケーションによって割り当てられます。
Pixomatic 2 の要件
- MMX 機能を含む x86 互換プロセッサ
- Microsoft Windows、MacOS X、または Linux
Pixomatic 2 DX 互換ラッパー
Pixomatic 2 では、ネイティブ API のほかに、DX9 互換ラッパーを使用できます。このラッパーは、2 つのテクスチャ、3 つのステージ、ミップマッピング、ステージ操作およびフレーム バッファ ブレンドの完全セットなど、Pixomatic 2 の機能のサブセットを広範囲にサポートします。ただし、Pixomatic 2 は、頂点シェード、ピクセル シェーダ、キューブ マップ、または DXT テクスチャをサポートしないため、ラッパーもこれらの機能はサポートしません。
このラッパーは、D3D サンプル、いくつかのゲーム、その他の 3D アプリケーション (Medal of Honor、Backyard Baseball 2005、Backyard Hockey、Backyard Skateboarding、Logitech など) でテストされていますが、WHQL テストは行われていません。実装/互換性に関する問題やバグを見つけた場合は、電子メール (mitchs@radgametools.com) でお問い合わせください。
ラッパーは、GDI を使用してスクリーンに描画できるため、どのバージョンの DX もインストールする必要はありません。また、DDraw3 を使用できる場合、ラッパーは DDraw3 を使用してプライマリ バッファをロックできます。この場合、GDI 描画とプライマリ バッファへの直接コピーの両方が試行され、どちらか速いほうが使用されます。
通常、このラッパーを使用する場合は、約 4 行のコードを追加/変更して、次のように実装する必要があります。
1. Pixomatic 2 Direct3D Wrapper 作成関数のプロトタイプ PixoDirectCreate9() を追加します。
2. Direct3DCreate9() 呼び出しを PixoDirectCreate9() に置き換えます。
3. dx9pixo.lib または dx9pixo_debug.lib とリンクします。
PixoDirect3DCreate9() 呼び出しは、IDirect3D9 インターフェイス ポインタを返します。これは、標準の Direct3DDevice9 オブジェクトのように使用できます。
また、Direct3D 8.1 ラッパーもあります。
ラッパーでは公開されない Pixomatic 2 の機能は、Pixomatic 2 を直接呼び出してアクセスすることができます。重要なことは、Pixomatic 2 ソフトウェア レンダラはバイリニア テクスチャ フィルタリングをサポートしますが、DX テクスチャのフィルタ状態は無視され、DX 互換ラッパーでは常にポイント フィルタリングが使用されるということです。これは、ほとんどのゲームではバイリニア フィルタリングが有効にされたままになっているので、特にローエンドのマシンでは、Pixomatic 2 のパフォーマンスが低下することがあるためです。バイリニア フィルタリングを有効にして Pixomatic 2 を実行する場合は、Pixomatic 2 を直接呼び出し、必要な場合にバイリニアを有効にすることができます。
Pixomatic についてのご意見
- "Pixomatic is great! With Unreal Tournament 2003, it gives us a reliable way to run well on the millions of PC's which lack decent 3D hardware acceleration or drivers."
- Tim Sweeney, Epic Games
- "Pixomatic wast just the thing we needed at the end of Lionheart. We were under intense pressure to get the game done and there was no way we could match the incredible optimization effort that has gone into Pixomatic. Rad Game Tools and Michael Sartain were also incredibly helpful in getting Pixomatic working in Lionheart in as little time as possible."
- Lars Brubaker, CEO, Reflexive Entertainment Inc.
Pixomatic が使用されたゲームのリスト (一部)
- お客様
- ゲーム
- Amaze Entertainment
- Shrek 2
- Anark Corporation
- Anark Studio
- Atari
- Backyard Hockey, Backyard Skateboarding, Backyard Baseball 2005
- Electonic Arts
- Medal of Honor Allied Assault Breakthrough patch 2.4
- Epic Games
- Unreal Engine2, Unreal Tournament 2003, Unreal Tournament 2004
- Legacy Interactive
- ER: The Game
- Legendo Entertainment
- The 3 Musketeer
- Microsoft
- Microsoft Train Simulator 2, Microsoft Flight Simulator 2004 - A Century of Flight
- Northrop-Grumman Mission Systems
- Multiple projects
- Reflexive Entertainment
- Lionheart - Legacy of the Crusader
- SnapStream Media
- Beyond TV
- WagerLogic
- TBA