次の方法で共有


テクスチャ ブレンディング

テクスチャ ブレンディング

Microsoft® Direct3D® では、単一のパスで、最大 8 つのテクスチャをプリミティブにブレンドできる。マルチ テクスチャ ブレンディングを使えば、Direct3D アプリケーションのフレーム レートを大幅に上げることができる。アプリケーションは、マルチ テクスチャ ブレンディングを採用して、テクスチャ、影、スペキュラ ライト、ディフューズ ライトなどの特殊効果を単一パスで適用できる。

テクスチャ ブレンディングを使う場合、ユーザーのハードウェアがテクスチャ ブレンディングをサポートしているかどうかを最初に調べる必要がある。これらの情報は、D3DCAPS9 構造体の TextureCaps メンバに保持されている。テクスチャ ブレンディング機能についてユーザーのハードウェアに問い合わせる方法の詳細については、「IDirect3DDevice9::GetDeviceCaps」を参照すること。

テクスチャ ステージとテクスチャ ブレンディング カスケード

Direct3D は、テクスチャ ステージを使って、シングルパスのマルチ テクスチャ ブレンディングをサポートしている。テクスチャ ステージには 2 つの引数を受け取り、ブレンディング処理を行い、後続の処理またはラスタ化に結果を渡す。テクスチャ ステージは、次の図のように図式化できる。

ブレンドされた出力

上の図に示すように、テクスチャ ステージは指定のオペレータを使って 2 つの引数をブレンドする。一般的な操作には、引数の色またはアルファ成分の単純乗算や加算があるが、24 以上の操作がサポートされている。ステージの引数は、関連付けられたテクスチャ、補間色または補間アルファ (グーロー シェーディング中の補間)、任意の色とアルファ、または以前のテクスチャ ステージからの結果である。詳細については、「テクスチャ ブレンディング処理と引数」を参照すること。

  Direct3D では、カラー ブレンディングとアルファ ブレンディングを区別する。アプリケーションでは、色とアルファに対して個別にブレンディング処理と引数を設定し、これらの設定が互いの結果に影響することはない。

マルチ ブレンディング ステージで使われる引数と処理の組み合わせは、単純なフローを基本とするブレンディング言語を定義する。1 つのステージの結果は別のステージに流れ、次にそのステージの結果が次のステージに流れ、以下同様に続く。ステージからステージへの流れが最終的にポリゴン上でラスタ化される概念を、通常、テクスチャ ブレンディング カスケードと呼ぶ。次の図は、個別のテクスチャ ステージがどのようにテクスチャ ブレンディング カスケードを構成するかを示している。

テクスチャ ブレンディング カスケード

デバイス内の各ステージは、0 から始まるインデックスを持つ。Direct3D では、最大 8 つのブレンディング ステージを利用できる。ただし、現在のハードウェアでサポートされるステージ数を判断するために、デバイス機能を調べる必要がある。第 1 ブレンディング ステージはインデックス 0 にあり、第 2 ステージはインデックス 1 にあり、以下インデックス 7 まで同様である。システムは、インデックスの昇順にステージをブレンドする。

必要な数だけのステージを使う。使わないブレンディング ステージはデフォルトで無効になる。アプリケーションが最初の 2 つのステージだけを使う場合は、ステージ 0 と 1 についてだけ設定操作と引数が必要である。システムは 2 つのステージをブレンドし、無効なステージを無視する。

パフォーマンスに関する注意  オブジェクトによっては 4 つのステージを使ったり、2 つのステージを使うなど、状況に応じてアプリケーションで使うステージの数が変わる場合は、以前に使ったすべてのステージを明示的に無効にしなくてもよい。第 1 のオプションとしては、最初の未使用のステージに対してカラー処理を無効すると、そのステージよりもインデックスが大きいステージは適用されなくなる。第 2 のオプションとしては、カラー処理を最初のテクスチャ ステージ (ステージ 0) に設定すると、すべてのテクスチャ マッピングをまとめて無効にすることができる。第 3 のオプションとしては、テクスチャ ステージの D3DTSS_COLORARG1 が D3DTA_TEXTURE と等しく、テクスチャ ポインタが NULL の場合、そのステージおよび以降のすべてのステージは処理されない。

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