次の方法で共有


インデックス付き頂点ブレンディング

インデックス付き頂点ブレンディング

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

  • 単一の三角形に対して、より多くの行列が影響を与えるようにできる。
  • より多くのブレンドされた三角形を、同一の描画呼び出しに渡すことができる。
  • 頂点ブレンディングを三角形インデックスとは独立したものにする。このため、プログレッシブ メッシュを頂点ブレンディングと共に動作させることができる。

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

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

使用可能な 256 個の行列のうちの 4 つを使ったインデックス付き頂点ブレンディング

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

使用可能な 256 個の行列のうちの 12 個を使った、三角形のインデックス付き頂点ブレンディング

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

インデックス付き頂点ブレンディングの一般的な場合の公式

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

詳細については、次のトピックを参照すること。