Platform SDK: DirectX |
Direct3D 直接モードでは、ワールド行列、ビュー行列、および射影行列によってトランスフォームされた頂点の W 要素を利用して、深度バッファまたはフォグ エフェクトの計算を深度をベースに実行できる。このような計算では、射影行列により W をワールド空間 Z で対応する W に正規化する必要がある。つまり、射影行列に 1 ではない (3,4) 係数が含まれる場合、(3,4) 係数の逆数を使用してすべての係数をスケーリングすることで、適切な行列を作成しなければならない。対応していない行列を使用すると、フォグ エフェクトと深度バッファが正しく適用されない (射影トランスフォームとはで推奨する射影行列は、w ベースの計算に対応している)。
次の図は、対応していない射影行列、および同じ行列をスケーリングして視点からの相対視点からの相対位置座標によるフォグが有効になるようにした行列を示す。
上の図では、すべての変数がゼロ以外の値であるとする。視点からの相対視点からの相対位置座標によるフォグの詳細については、「視点からの相対深度 対 Z ベースの深度」を参照すること。w ベースの深度バッファリングについては、「深度バッファとは」を参照すること。
注 : Direct3D では、現在設定されている射影行列が w ベースの深度計算に使用される。その結果、アプリケーションでは Direct3D トランスフォーム パイプラインを使用しない場合でも、希望の w ベース機能を受け取る、対応した射影行列を設定する必要がある。