Microsoft DirectX 8.0 (C++) |
次の図は、ピクセル シェーダのテクスチャ アドレッシングのメカニズムを示している。
テクスチャ処理と関連して、テクスチャ座標を使用し、4 つの入力テクスチャをサンプリングすることで、テクスチャ レジスタ t0、t1、t2、および t3 が結果として得られる。テクスチャ座標とテクスチャ レジスタのマッピングは、D3DTSS_TEXCOORDINDEX テクスチャ ステージ ステートによって制御される。デフォルトでは、すべてのテクスチャ ステージは座標セット 0 からテクスチャ座標を受け取る。命令は以前のテクスチャ レジスタからの結果しか使用できないため、適切な順序で配置する必要がある。
依存テクスチャを使用する場合は、任意のテクスチャを、それより大きい番号のテクスチャの座標補正に使用できる (t1 を使って t2 の座標を補正するなど)。
Direct3DX のピクセル シェーダ アセンブラは、テクスチャ アドレス演算子と修飾子の両方を提供する。詳細については、「ピクセル シェーダ アセンブラ リファレンス」を参照すること。
次のピクセル シェーダ コードは、ライティング ベースのテクスチャ上にバンプ環境マップをプログラミングしたテクスチャ アドレス シェーダを示している。
ps.1.0 // DirectX8 バージョン。 tex t0 // テクスチャを宣言する。 tex t1 // バンプ マップを宣言する。 texbem t3, t1 // 摂動、次に // 環境マップをサンプリングする。 mul r0, v0, t0 // ディフューズを乗算する。 add r0, r0, t3 // バンプ スペキュラ環境マップを追加する。