Microsoft DirectX 8.0 (C++)

インデックス付き頂点ブレンディングについて

インデックス付き頂点ブレンディングは、Microsoft® Direct3D® の頂点ブレンディング サポートを拡張して、行列をブレンディングに使用できるようにしたものである。これらの行列は、行列のインデックスを使用して示される。これらのインデックスは、頂点ごとに提供され、最大 256 個の行列のパレットを参照する。各インデックスは 8 ビットで、各頂点には最大 4 つまでのインデックスを持たせることができるため、1 つの頂点につき 4 つの行列をブレンドすることができる。インデックスは、DWORD にパックされる。インデックスは頂点ごとに指定されるので、最大 12 個の行列が単一の三角形に影響を与えることができ、パレット内の任意の行列が 1 つの描画呼び出しの頂点に影響を与えることができる。このアプローチには、次のような長所がある。

この方法の弱点は、頂点処理の前にテッセレーションが行われると、曲面サーフェス プリミティブを処理しないことである。

次の図は、頂点が 4 つの行列によって影響を受ける様子を示している。各頂点は最大 4 つまでのインデックスを持つことができるので、頂点ごとに 4 つの行列をブレンドすることができる。次の図では、0、2、5、および 6 とインデックスを付けられた行列を使用する。

次の図は、1 つの三角形が最高 12 の行列によって影響を受ける様子を示している。頂点ごとに指定されるインデックスを使用して、最大 12 個の行列が単一の三角形に影響を与えることができる。

次の公式は、行列が頂点に与える効果についての一般的な場合を決定する。

Vmodel は、入力モデル空間での頂点の位置座標である。Index0..Index3 は、DWORD にパックされた頂点ごとの行列のインデックスである。M[] は、インデックスを付けるワールド行列の配列で、b0..b2 はブレンド ウェイトである。Vworld は、出力ワールド空間での頂点の位置座標である。