次の方法で共有


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 によって出力される単一の深度値が使用されます。

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