Microsoft DirectX 8.0 (C++)

W バッファに有効な射影行列

Microsoft® Direct3D® では、ワールド行列、ビュー行列、および射影行列によってトランスフォームされた頂点の W 要素を利用して、深度バッファまたはフォグ エフェクトの計算を深度をベースに実行できる。このような計算では、射影行列により W をワールド空間 Z で対応する W に正規化する必要がある。つまり、射影行列に 1 ではない (3,4) 係数が含まれる場合、(3,4) 係数の逆数を使用してすべての係数をスケーリングすることで、適切な行列を作成しなければならない。対応していない行列を使用すると、フォグ エフェクトと深度バッファが正しく適用されない。射影トランスフォームとはで推奨する射影行列は、w ベースの計算に対応している。

次の図は、対応していない射影行列、および同じ行列をスケーリングして視点との相対フォグが有効になるようにした行列を示している。

上の図では、すべての変数がゼロ以外の値であるとする。視点との相対フォグの詳細については、「視点からの相対深度 対 Z ベースの深度」を参照すること。w ベースの深度バッファリングについては、「深度バッファとは」を参照すること。

  Direct3D では、現在設定されている射影行列が w ベースの深度計算に使用される。したがって、アプリケーションで Direct3D トランスフォーム パイプラインを使用しない場合であっても、希望の w ベース機能を取得するために適切な射影行列を設定しておく必要がある。