texm3x2depth - ps
このピクセルの深度テストで使用される深度値を計算します。
構文
texm3x2depth dst, src |
---|
where
- dst は宛先レジスタです。
- src はソース レジスタです。
注釈
ピクセル シェーダーのバージョン | 1_1 | 1_2 | 1_3 | 1_4 | 2_0 | 2_x | 2_sw | 3_0 | 3_sw |
---|---|---|---|---|---|---|---|---|---|
texm3x2depth | x |
この命令は、 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
// Calculate z value
texm3x2depth t(m+1), t(n) // Calculate w value; use both z and w to
// find depth
深度の計算は、ドット積演算を使用して z と w を検索した後に行われます。 深度計算の実行方法の詳細を次に示します。
texm3x2pad 命令は z を計算します。
z = TextureCoordinates(stage m)UVW * t(n)RGB
texm3x2depth 命令は w を計算します。
w = TextureCoordinates(stage m+1)UVW * t(n)RGB
深さを計算し、結果を t(m+1) に格納します。
if (w == 0)
t(m+1) = 1.0
else
t(m+1) = z/w
計算された深度は、ピクセルの深度テストで使用されるようにタグ付けされ、ピクセルの既存の深度テスト値を置き換えます。
z/w を (0 から 1) の範囲内に固定してください。 z/w がこの範囲外の場合、深度バッファーに格納された結果は未定義になります。
texm3x2depth を実行すると、レジスタ t(m+1) はシェーダーで使用できなくなります。
マルチサンプリングの場合、この命令を使用すると、解像度の高い深度バッファーの利点の大部分が排除されます。 ピクセル シェーダーはピクセルごとに 1 回実行されるため、サブピクセル深度比較テストごとに texm3x2depth または texdepth - ps によって出力される単一の深度値が使用されます。
関連トピック