Microsoft DirectX 8.0 (Visual Basic)

ピクセル シェーダ仮想マシン用のデータを準備する

オレンジの球体をバンプ マップと環境マップのデータでレンダリングする前に、バンプ マップおよび環境マップをロードする必要がある。その後各テクスチャ処理ユニットに該当するテクスチャ ステージ ステートを設定する。これには、D3DTSS_BUMPENVMAT00D3DTSS_BUMPENVMAT01D3DTSS_BUMPENVMAT10D3DTSS_BUMPENVMAT11、および D3DTSS_TEXCOORDINDEX テクスチャ ステージ ステートの設定が含まれる。ただし、D3DTSS_COLOROP によって定義されるカラー処理は設定する必要がない。これは、ピクセル単位に実行される処理の定義に、ピクセル シェーダ コードが使用されるためである。一般に、三角形、オブジェクト、またはフレームをレンダリングしている間に一定の状態を維持するテクスチャ ステージ ステートは、ピクセル シェーダ仮想マシンを呼び出す前に設定される。これには、2 × 2 バンプ マッピング行列値が含まれる。ただし、各ピクセルのシェードに使用されるデータは、ピクセル シェーダ言語を使って指定される。

この例では、頂点シェーダ内で発生するフロント エンド処理については触れていない。その代わり、フロント エンドがテクスチャ補間を設定することにより、バンプ データが頂点シェーダの oT0 チャネルを介して渡されると前提する。これは、オレンジの球体の例では、バンプ データへのアクセスに使用されるバンプ マップ アドレスが、ピクセル シェーダの最初のテクスチャ座標レジスタ (t0) に設定されることを意味する。同様に、ライト マップ アドレスは、テクスチャ処理ユニットで変更が行われる前に、頂点シェーダの oT1 チャネルから t1 を介してピクセル シェーダに渡される。