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 テクスチャの両方が保持されます。
関連トピック