Microsoft DirectX 8.0 (Visual Basic) |
入力色ベクトルに対して 3 × 2 行列乗算を実行する。
texm3x2tex tDest, tSrc0
texm3x2tex 命令は、指定された入力色を取得し、入力色とそのステージのテクスチャ座標 (u、v、および w) の内積を計算して、u 座標を生成する。次に、同じ入力色を取得し、入力色とこのステージのテクスチャ座標の内積を計算して、v 座標を得る。最後に、このステージのテクスチャを (u、v) でサンプリングして、最終的な色を生成する。前のステージではテクスチャはサンプリングされておらず、また前のステージでテクスチャを設定する必要はなく、テクスチャに割り当てられているすべての演算子はこの演算によって無効になる。
次の例は、texm3x2tex 命令の使い方を示している。
tex t0 ; 標準的な 3 ベクトルとして t0 を定義 texm3x2pad t1, t0 ; 行列の第 1 行の乗算を実行 texm3x2tex t2, t0 ; 行列の第 2 行の乗算を実行し、 ; テクスチャ 2 としてサンプルする 2 ベクトルを取得 mov r0, t2
バンプ (通常の) マップはステージ 0 で設定し、標準の 2D テクスチャはステージ 2 で設定する必要がある。ステージ 1 で設定されるテクスチャは、すべて無視される。たとえば、次のシェーダでは、ベース テクスチャはディフューズ バンプ マップを乗算し、指数スペキュラを追加することによってライティングされている。ステージ 0 ではベース テクスチャを設定し、ステージ 1 では法線マップを設定し、ステージ 2 ではもう一度法線マップを設定している。
ps.1.0 ; DirectX8 バージョン tex t0 ; サンプル法線マップ texm3x2pad t1, t0_bx2 ; ライト ベクトルによる内積 texm3x2tex t2, t0_bx2 ; 半ベクトルとサンプルによる内積 mov r0, t2
設定 0 のテクスチャ座標はバンプ マップに位置する。テクスチャ座標セット 1 および 2 は、行列の行である。
この命令は、このテクスチャ ステージに対応する割り当て済みのテクスチャである無名の入力を取ることに注意すること。