次の方法で共有


texm3x3tex - ps

3x3 行列乗算を実行し、結果を使用してテクスチャ参照を実行します。 texm3x3tex は、2 つの texm3x3pad - ps 命令と共に使用する必要があります。

構文

texm3x3tex dst, src

 

where

  • dst は宛先レジスタです。
  • src はソース レジスタです。

注釈

ピクセル シェーダーのバージョン 1_1 1_2 1_3 1_4 2_0 2_x 2_sw 3_0 3_sw
texm3x3tex x x x

 

この命令は、3 x 3 行列乗算演算を表す 3 つの命令の最後として使用され、その後にテクスチャ参照が続きます。 3x3 マトリックスは、3 番目のテクスチャ ステージと前の 2 つのテクスチャ ステージのテクスチャ座標で構成されます。 結果として得られる 3 成分ベクトル (u,v,w) を使用して、ステージ 3 でテクスチャをサンプリングします。 前の 2 つのテクスチャ ステージに割り当てられたテクスチャは無視されます。 通常、3x3 行列乗算は、レンダリングされるサーフェスの正しい接線空間に法線ベクトルを向ける場合に便利です。

この命令は、texm3x3pad 命令と共に使用する必要があります。 テクスチャ レジスタでは、次のシーケンスを使用する必要があります。

 
tex t(n)                 // Define tn as a standard 3-vector (tn must
                         //   be defined in some way before it is used)
texm3x3pad t(m),   t(n)  //   where m > n
                         // Perform first row of matrix multiply
texm3x3pad t(m+1), t(n)  // Perform second row of matrix multiply
texm3x3tex t(m+2), t(n)  // Perform third row of matrix multiply to get a
                         //   3-vector with which to sample texture
                         //   associated with texture stage m+2

3x3 乗算の実行方法の詳細を次に示します。

最初の texm3x3pad 命令は、乗算の最初の行を実行して u' を見つけます。

u' = TextureCoordinates(stage m)UVW * t(n)RGB

2 番目の texm3x3pad 命令は、乗算の 2 行目を実行して v' を見つけます。

v' = TextureCoordinates(stage m+1)UVW * t(n)RGB

texm3x3spec 命令は、乗算の 3 行目を実行して w' を見つけます。

w' = TextureCoordinates(stage m+2)UVW * t(n)RGB

最後に、texm3x3tex 命令は t(m+2) を (u',v',w') でサンプリングし、結果を t(m+2) に格納します。

t(m+2)RGBA = TextureSample(stage m+2)RGBA using (u' , v' , w' ) as coordinates.

テクスチャ マップが識別され、テクスチャ ステージが識別されたシェーダーの例を次に示します。

ps_1_1
tex t0                // Bind texture in stage 0 to register t0
texm3x3pad  t1,  t0   // First row of matrix multiply
texm3x3pad  t2,  t0   // Second row of matrix multiply
texm3x3tex  t3,  t0   // Third row of matrix multiply to get a
                      // 3-vector with which to sample texture at 
mov r0, t3            // stage 3 output result

この例では、次のテクスチャ ステージの設定が必要です。

  • ステージ 0 には、通常のデータを含むテクスチャ マップが割り当てられます。 これは、多くの場合、バンプ マップと呼ばれます。 データは、各テクセルの (XYZ) 法線です。 テクスチャ座標セット 0 は、この法線マップをサンプリングする方法を定義します。
  • テクスチャ座標セット 1 は、3x3 行列の行 1 に割り当てられます。 ステージ 1 に割り当てられたテクスチャは無視されます。
  • テクスチャ座標セット 2 は、3x3 行列の行 2 に割り当てられます。 ステージ 2 に割り当てられたテクスチャは無視されます。
  • テクスチャ座標セット 3 は、3x3 行列の行 3 に割り当てられます。 変換された 3D ベクターによる参照のために、ボリュームまたはキューブ テクスチャをステージ 3 に設定する必要があります。

ピクセル シェーダーの手順