Platform SDK: DirectX |
Direct3Dは、"テクスチャ ステージ" の使用により、シングル パスのマルチ テクスチャ ブレンディングをサポートしている。テクスチャ ステージには 2 つの引数を受け取り、ブレンディング操作を行い、後続の処理またはラスタ化に結果を渡す。テクスチャ ステージは、次の図に示すように図式化できる。
上の図に示すように、テクスチャ ステージは指定のオペレータを使用して 2 つの引数をブレンドする。一般的な操作には、引数の色またはアルファ要素の単純変調や加算があるが、現在、20 以上の操作がサポートされている。ステージの引数は、関連付けられたテクスチャ、反復色または反復アルファ (グーロー シェーディング中の反復)、任意の色とアルファ、または以前のテクスチャ ステージからの結果である。詳細については、「テクスチャ ブレンディング処理と引数」を参照すること。
注 : Direct3D では、色ブレンディングとアルファ ブレンディングを区別する。アプリケーションでは、色とアルファに対して個別にブレンディング処理と引数を設定し、これらの設定が互いの結果に影響することはない。
マルチ ブレンディング ステージで使用される引数と操作の組み合わせは、単純なフローを基本とするブレンディング言語を定義する。1 つのステージからの結果は、別のズテージに流れ、次にそのステージからの結果が次のステージに流れ、以下同じように続く。ステージからステージへの流れが最後にはポリゴン上でラスタ化されるというアイデアは、しばしば「テクスチャ ブレンディング カスケード」と呼ばれる。次の図は、個別のテクスチャ ステージがどのようにテクスチャ ブレンディング カスケードを構成するかを示す。
デバイス内の各ステージは、0 から始まるインデックスを持つ。Direct3D では、現在のところ最大 8 つのブレンディング ステージを利用できる。ただし、現在のハードウェアでサポートされるステージ数を判断するために、デバイス機能を調べる必要がある。第 1 ブレンディング ステージはインデックス 0 にあり、第 2 ステージはインデックス 1 にあり、以下インデックス 7 まで同様である。システムは、インデックスの昇順にステージをブレンドする。
必要な数だけのステージを使用する。使用しないブレンディング ステージはデフォルトで無効になる。アプリケーションが最初の 2 つのステージだけを使う場合は、ステージ 0 と 1 についてだけ設定操作と引数が必要であり、残りのステージはそのままにする。システムは 2 つのステージをブレンドして、無効なステージを無視する。
最適化に関する注意 : オブジェクトによっては 4 つのステージを使用したり、2 つのステージを使用するなど、状況に応じてアプリケーションで使用するステージの数が変わる場合は、以前に使用したすべてのステージを明示的に無効にしなくてもよい。最初の未使用のステージに対して色処理を無効にしても、それよりインデックスが大きいステージでは無効にならない。色処理を最初のテクスチャ ステージ (ステージ 0) に設定すると、すべてのテクスチャ マッピングを無効にできる。