Microsoft DirectX 8.0 (C++) |
ここでは、Direct3DX ピクセル シェーダ アセンブラが実装するテクスチャ アドレッシング命令についてのリファレンス情報を記述する。テクスチャ アドレッシング命令は、(テクスチャ カラー座標に対立するものとして) テクスチャ アドレス データを操作できるようにするために用意されている。
サンプリング ステージのテクスチャ セットは、Microsoft® Direct3D® アプリケーション プログラミング インターフェイス (API) のテクスチャ ステージ ステートによって選択されるサンプリング、フィルタリング、およびラッピング モードを使って、対応するテクスチャからサンプリングされる。テクスチャをサンプリングするときに、テクスチャのサンプリングに使用するアドレスに適用できる処理もある。これらの処理は、テクスチャ アドレッシング処理と呼ばれる。
次の表は、テクスチャ アドレッシング命令およびテクスチャ補正処理のサブセットを示している。
命令 | 説明 |
---|---|
tex | 変更なし |
texbem | バンプ環境マップ |
texbeml | 輝度付きバンプ環境マップ |
texcoord | テクスチャ座標 |
texkill | ピクセルのマスク アウト |
texm3x2pad | 3 × 2 行列乗算への入力 |
texm3x2tex | 3 × 2 行列乗算の結果 |
texreg2ar | アルファ成分および赤成分の再マッピング |
texreg2gb | 緑成分および青成分の再マッピング |
さらに、ピクセル シェーダ API は、テクスチャからサンプリングされたベクトルについてのピクセル単位の 3 × 3 行列乗算を実行する多くのメソッドをサポートする。3 × 3 行列は、3 つの連続するテクスチャ宣言ステージのテクスチャ座標で構成されている。これらの行列乗算演算は、複数のテクスチャ アドレス処理から構築される。
次の表は、ピクセル単位の 3 × 3 行列乗算に関連する、残りのテクスチャ アドレッシング命令を示している。
命令 | 説明 |
---|---|
texm3x3pad | 3 × 3 行列乗算への入力 |
texm3x3spec | スペキュラ反射と環境マッピング |
texm3x3tex | 3 × 3 行列乗算の結果 |
texm3x3vspec | 固定視点ベクトルを含まないスペキュラ反射/環境マッピング |
テクスチャ アドレス命令は、宣言/定義したテクスチャ アドレスになる出力引数 (結果) を定義する。一部の命令では、入力オペランドを指定する必要がある。この入力オペランドは、定義済みのテクスチャでなければならない。これらは、テクスチャ サンプリング ユニットによって、カラー処理/アルファ処理/ブレンディング シェーダに放出されるテクスチャ カラーの宣言と考えられる。これらのテクスチャ レジスタは、定義済みのテクスチャで宣言できるが、後のテクスチャ、またはその他のピクセル カラー レジスタとしては宣言できない。
すべてのテクスチャ アドレス処理は、テクスチャを定義した順序で宣言しなければならない。テクスチャ アドレス処理では、それより後にある別のテクスチャ (つまり、ステージ番号がより大きなテクスチャ) を参照することはできない。
パフォーマンスに関する注意 テクスチャ アドレッシング処理では、テクスチャ アドレスを表すのに十分な精度をサポートしている必要がある。たとえば、デバイスでサポートされている最大テクスチャ ディメンジョンの環境マップで、テクセルの一部に対して補正できるバンプ環境マッピング行列の要素で補正を表現するのに十分な精度でなければならない。また、これらの処理で補間されるすべての量は、パースペクティブ補正を使って補間しなければならない。