次の方法で共有


texm3x2tex - ps

3x2 行列乗算の最後の行を実行し、結果を使用してテクスチャ参照を実行します。 texm3x2tex は 、texm3x2pad - ps 命令と組み合わせて使用する必要があります。

構文

texm3x2tex dst, src

 

where

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

注釈

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

 

命令は、3x2 行列乗算演算を表す 2 つの命令のいずれかとして使用されます。 この命令は、 texm3x2pad - ps 命令と共に使用する必要があります。

この 2 つの命令を使用する場合、テクスチャ レジスタは次のシーケンスを使用する必要があります。

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

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

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

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

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

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

texm3x2tex 命令は、(u',v') を使用してステージ (m+1) のテクスチャをサンプリングし、結果を t(m+1) に格納します。

t(m+1)RGB = TextureSample(stage m+1)RGB using (u', v' ) as coordinates

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

ps_1_1
tex t0                // Bind texture in stage 0 to register t0
texm3x2pad  t1,  t0   // First row of matrix multiply
texm3x2tex  t2,  t0   // Second row of matrix multiply to get (u,v)
                      // with which to sample texture in stage 2
mov r0, t2            // Output result

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

  • ステージ 0 は、(x,y,z) 摂動データを含むマップを取得します。
  • ステージ 1 はテクスチャ座標を保持します。 テクスチャ ステージではテクスチャは必要ありません。
  • ステージ 2 には、テクスチャ座標と、そのテクスチャ ステージで設定された 2D テクスチャの両方が保持されます。

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