テクスチャコンバイナ

ここでは、テクスチャコンバイナについて説明します。

テクスチャコンバイナとは

テクスチャコンバイナとは、ライティング、テクスチャ、定数カラー、などの混ぜ合わせを行い、最終的なカラーとアルファを決定する仕組みです。ゲームキューブやWiiのTEVでのカラー・アルファ合成処理をイメージしていただければ理解しやすいと思います。テクスチャコンバイナはカラー(RGB)用の処理とアルファ(A)用の処理がそれぞれ独立して行われます。

テクスチャコンバイナの構造

ここでは、テクスチャコンバイナの構造について説明します。テクスチャコンバイナは後述する計算式を最大6回繰り返し処理することができます。この計算式の一回の処理を段と呼びます。最初の段を0段目と呼び、最大で6段まで処理できます。

以下の図は、テクスチャコンバイナの構造についてイメージしたものです。

テクスチャコンバイナの構成

テクスチャコンバイナの設定

ここでは、テクスチャコンバイナの設定項目について説明します。

入力ソース

テクスチャコンバイナでは、混ぜ合わせの処理を行う際に 3 つの入力ソースを使用します。

以下の表は、テクスチャコンバイナで使用する 10 種類の入力ソースについてまとめたものです。

ソースの種類 説明
テクスチャ 0 テクスチャ 0 で設定したテクスチャ画像のカラーとアルファです。
テクスチャ 1 テクスチャ 1 で設定したテクスチャ画像のカラーとアルファです。
テクスチャ 2 テクスチャ 2 で設定したテクスチャ画像のカラーとアルファです。
テクスチャ 3 テクスチャ 3 で設定したテクスチャ画像のカラーとアルファです。
コンスタントカラー テクスチャコンバイナの各段に 1 つ選んで設定できるカラーやアルファです。
頂点シェーダーの出力結果 頂点シェーダーから出力されたカラーやアルファです。
前段の出力結果 前段から出力されたカラーやアルファです。最初の段では使用できません。
前段のバッファ 前段からバッファへ出力されたカラーやアルファです。最初の段では使用できません。
プライマリカラー フラグメントライティングの出力結果です。
セカンダリカラー フラグメントライティングの出力結果です。

2 段目以降の入力ソースの内、少なくとも 1 つにはコンスタントカラー、前段の出力結果、前段のバッファのどれかを指定しなければなりません。

オペランド

オペランドとは、入力ソースの RGBA 各チャンネルの中から混ぜ合わせの対象となる成分を指定するテクスチャコンバイナの機能です。デフォルト設定ではカラー側に RGB 、アルファ側に A が適用されます。

以下のテクスチャ画像をもとに、オペランドについて説明します。

カラーチャンネル アルファチャンネル
コンバイナA アルファチャンネル

テクスチャコンバイナにおけるカラーのオペランド

以下の表は、テクスチャコンバイナのカラー側で選択できるオペランドの種類についてまとめたものです。

項目 結果 説明
RGB コンバイナA カラーチャンネルを R , G , B チャンネルへ適用します。
1 - RGB オペランド1-RGB カラーチャンネルを反転して R , G , B チャンネルへ適用します。
A アルファチャンネル アルファ チャンネルを R , G , B チャンネルへ適用します。
1 - A オペランド1-A アルファチャンネルを反転して R , G , B チャンネルへ適用します。
R オペランド1R カラーの R チャンネルを R , G , B チャンネルへ適用します。
G オペランド1G カラーの G チャンネルを R , G , B チャンネルへ適用します。
B オペランドB カラーの B チャンネルを R , G , B チャンネルへ適用します。
1 - R オペランド1-R カラーの B チャンネルを反転して R , G , B チャンネルへ適用します。
1 - G オペランド1-G カラーの G チャンネルを反転して R , G , B チャンネルへ適用します。
1 - B オペランド1-B カラーの B チャンネルを反転して R , G , B チャンネルへ適用します。

テクスチャコンバイナにおけるアルファのオペランド

以下の表は、テクスチャコンバイナのアルファ側で選択できるオペランドの種類についてまとめたものです。

項目 結果 説明
A アルファチャンネル アルファ チャンネルを A チャンネルへ適用します。
1 - A オペランド1-A アルファチャンネルを反転して A チャンネルへ適用します。
R オペランド1R カラーの R チャンネルを A チャンネルへ適用します。
G オペランド1G カラーの G チャンネルを A チャンネルへ適用します。
B オペランドB カラーの B チャンネルを A チャンネルへ適用します。
1 - R オペランド1-R カラーの B チャンネルを反転して A チャンネルへ適用します。
1 - G オペランド1-G カラーの G チャンネルを反転して A チャンネルへ適用します。
1 - B オペランド1-B カラーの B チャンネルを反転して A チャンネルへ適用します。

テクスチャコンバイナの計算式

テクスチャコンバイナの計算式とは、入力ソースのオペランド設定により決まったカラーとアルファの成分を混ぜ合わせる為に使用する計算式です。カラーとアルファそれぞれに 10 種類の計算式から選択することができます。

以下のテクスチャ画像 A 、B 、C はそれぞれ、オペランド適用後の入力ソース 0 、1 、2 の結果です。
この画像をもとに、テクスチャコンバイナの計算式による混ぜ合わせについて説明します。

A B C
コンバイナA コンバイナB コンバイナC

以下の表は、 CreativeStudio で選択できるテクスチャコンバイナの計算式についてまとめたものです。

項目 関数名 結果 説明
A REPLACE コンバイナA A をそのまま出力します。
A × B MODULATE MODULATE A と B を乗算します。
A + B ADD ADD A と B を加算します。
A + B - 0.5 ADD_SIGNED ADD_SIGNED A と B を加算して、 0.5 を減算します。
A × C + B × ( 1 - C ) INTERPOLATE INTERPOLATEA A と B を C の割合でブレンドします。
例えば C のカラーをアニメーションさせることで、A から B へとなめらかに変化させることができます。
A - B SUBTRACT SUBTRACT A から B を減算します。
RGB ← Dot ( A , B ) DOT3_RGB DOT3_RGB A と B の RGB をベクトルとして扱うことから、リソースの種類に法線マップのテクスチャを指定し、カラーチャンネル単位で操作することに向きます。出力結果は各チャンネル成分に同じ値が入る為グレーとなります。
RGBA ← Dot ( A , B ) DOT3_RGBA DOT3_RGB RGB ← Dot ( A , B )と同様の計算式を使用しますが、カラー成分と同じ値がアルファ成分にも入ります。
CreativeStudio の設定において、カラーとアルファ側とも入力ソースに RGBA←Dot ( A , B ) を指定しなければなりません。
( A + B ) × C ADD_MULT ADD_MULT A と B を 加算してから C を乗算します。
計算中、A と B を加算した時点での値は 1.0 より上がりません。
( A × B ) + C MULT_ADD MULT_ADD A と B を 乗算してから C を加算します。

RGB ← Dot ( A , B ) および RGBA ← Dot ( A , B )の計算式は、 0 ~ 1 の範囲でテクスチャメモリに格納されるテクスチャ画像に対し、テクセル生成処理のベクトル計算のさいに -1 ~ 1 の範囲に変換されていることを考慮しています。

計算式は次のとおりです。

4 × ((Ar – 0.5) × (Br – 0.5) + (Ag – 0.5) × (Bg – 0.5) + (Ab – 0.5) × (Bb – 0.5))

ベクトルとは、大きさ方向の情報を持ち、矢印の長さと向きで表されます。 CreativeStudio では、ライト計算やパーティクルの速度の制御等さまざまな場面で使用されています。テクスチャ画像の色成分をベクトル XYZ の値に変換して使うこともできます。

計算結果のスケール

スケールの設定により、テクスチャコンバイナの計算結果に対して乗算することができます。混ぜ合わされたカラーとアルファにそれぞれにスケールを設定できます。× 1、× 2、× 4 の 3 種類から選択できます。