テクスチャステージステートは、固定機能ピクセルパイプラインでの色の合成法を設定します。一部は、ピクセルシェーダ1_Xにおける変数を設定します。値を設定する時には、IDirect3DDevice9::SetTextureStageState(テクスチャステージ, ステート種類, 値)で設定します。
テクスチャステージステート |
機能 |
D3DTSS_COLOROP |
色を合成する方法 |
D3DTSS_COLORARG1 |
色引数の最初の引数 |
D3DTSS_COLORARG2 |
色引数の2つめの引数 |
D3DTSS_COLORARG0 |
色引数の2つめの引数 |
D3DTSS_ALPHAOP |
テクスチャα合成処理の方法 |
D3DTSS_ALPHAARG1 |
α引数の最初の引数 |
D3DTSS_ALPHAARG2 |
α引数の2つめの引数 |
D3DTSS_ALPHAARG0 |
α引数の3つめの引数 |
D3DTSS_BUMPENVMAT00 |
バンプ マッピング行列の00成分に対する浮動小数点値 |
D3DTSS_BUMPENVMAT01 |
バンプ マッピング行列の01成分に対する浮動小数点値 |
D3DTSS_BUMPENVMAT10 |
バンプ マッピング行列の10成分に対する浮動小数点値 |
D3DTSS_BUMPENVMAT11 |
バンプ マッピング行列の11成分に対する浮動小数点値 |
D3DTSS_TEXCOORDINDEX |
テクスチャステージで使用するテクスチャ座標インデックスの指定 |
D3DTSS_BUMPENVLSCALE |
バンプマップ輝度に使用する浮動小数点数のスケール |
D3DTSS_BUMPENVLOFFSET |
バンプマップ輝度に使用する浮動小数点数のオフセット |
D3DTSS_TEXTURETRANSFORMFLAGS |
テクスチャステージのテクスチャ座標の座標変換を制御 |
D3DTSS_RESULTARG |
このステージの結果のデスティネーション レジスタを選択するための設定 |
D3DTSS_CONSTANT |
このテクスチャステージステートは、それぞれのテクスチャステージでの色を合成する方法を決めます。値は、D3DTEXTUREOP 列挙型で指定されます。最初のテクスチャステージ (ステージ 0) の初期値は D3DTOP_MODULATE です。それ以外のステージの初期値はD3DTOP_DISABLE です。D
3DTEXTUREOP 列挙型には、次の種類があります。
このテクスチャ ステージ、およびより高いインデックスを持つステージからの出力をすべて無効にします。テクスチャ マッピングを無効にするには、これを最初のテクスチャ ステージ (ステージ 0) のカラー処理として設定します。カラー処理が有効になっているときは、アルファ処理を無効にすることはできません。カラー ブレンディングが有効な場合、アルファ処理を D3DTOP_DISABLE に設定すると、不定の動作が生じます。
このテクスチャ ステージの最初の色、またはアルファ引数を変更せずに出力として使用します。この処理は、D3DTSS_COLOROP テクスチャ ステージ ステートで使用すると色引数に影響を与え、D3DTSS_ALPHAOP で使用した場合にはアルファ引数に影響を与えます。
このテクスチャ ステージの 2 番目の色、またはアルファ引数を変更せずに出力として使用すします。この処理は、D3DTSS_COLOROP テクスチャ ステージ ステートで使用すると色引数に影響を与え、D3DTSS_ALPHAOP で使用した場合にはアルファ引数に影響を与えます。
引数の成分を乗算します。
引数の成分を乗算し、その積を左に 1 ビットだけシフト (2 で乗算するのと同じ) して明るくします。
引数の成分を乗算し、その積を左に 2 ビットだけシフト (4 で乗算するのと同じ) して明るくします。
引数の成分を加算します。
バイアス値 -0.5 を引数の成分に加算し、値の有効範囲を -0.5 から 0.5 にします。
バイアス値 -0.5 を引数の成分に加算し、その積を左に 1 ビットだけシフトします。値の有効範囲を -1.0 から 1.0 にします。
第 1 引数の成分から、対応する第 2 引数の成分を減算します。
第 1 および第 2 引数を加算し、次にその積を合計から減算します。
各頂点からの補間アルファを使用して、このステージの線形補間をします。
このステージのテクスチャからのアルファを使用して、このステージの線形補間をします。
レンダリング ステートで設定されるスカラー アルファ (D3DRS_TEXTUREFACTOR) を使用して、このステージの線形補間をします。
あらかじめ乗算されたアルファを使用するテクスチャ ステージの線形補間を実行します。
前のテクスチャ ステージからのアルファを使用して、このステージの線形補間を行います。
現在のテクスチャ ステージと次のテクスチャ ステージの間で乗算を行います。
第 1 引数のアルファを使用して第 2 引数のカラーを調整し、その結果を第 1 引数に加算します。この処理は、カラー処理 (D3DTSS_COLOROP) でのみサポートされます。
引数を調整し、第 1 引数のアルファを加算します。この処理は、カラー処理 (D3DTSS_COLOROP) でのみサポートされます。
D3DTOP_MODULATEALPHA_ADDCOLOR に類似していますが、第 1 引数のアルファを反転した値を使用します。この処理は、カラー処理 (D3DTSS_COLOROP) でのみサポートされます。
D3DTOP_MODULATECOLOR_ADDALPHA に類似していますが、第 1 引数の色を反転した色を使用します。この処理は、カラー処理 (D3DTSS_COLOROP) でのみサポートされます。
次のテクスチャ ステージの環境マップ (輝度なし) による、ピクセル単位のバンプ マッピングを実行します。この処理は、カラー処理 (D3DTSS_COLOROP) でのみサポートされます。
次のテクスチャ ステージの環境マップ (輝度あり) による、ピクセル単位のバンプ マッピングを実行します。この処理は、カラー処理 (D3DTSS_COLOROP) でのみサポートされます。
各引数の要素を (符号付要素として) 乗算して積を加算し、得られた合計値をすべてのカラー チャネルに、アルファを含めて複製します。この処理はカラー処理とアルファ処理に対してサポートされます。
DirectX 6.0 および 7.0 のマルチテクスチャ処理では、上記の入力は、符号付きデータをシミュレートするため、使用する前にすべて 0.5 シフトされ (y = x - 0.5)、結果のスカラーは正の値に制限されて、3 つの出力チャネルすべてに複製されます。また、カラー処理としては、rgb 成分を更新したアルファを更新しないことに注意する必要があります。
ただし、ピクセルシェーダでは、出力を .rgb または .a コンポーネント、またはその両方 (デフォルト) にルーティングすることを指定できます。アルファ チャネルで個別のスカラー処理を指定することもできます。
積和演算をします。最後の 2 つの引数を取り、これらを乗算し、残りの入力引数に加算し、これを結果に配置します。
第 1 ソース引数で指定された割合で、第 2 および第 3 ソース引数の間を線形補間します。
このテクスチャステージステートは、そのステージに対する色引数の最初の引数になります(Arg1でかかれている成分です)。D3DTA列挙型で値を指定します。初期値は、D3DTA_TEXTUREです。
D3DTA列挙型には、次の種類があります。引数フラグと修飾子を組み合わせることはできますが2
つの引数フラグを組み合わせることはできません。
引数フラグ
このテクスチャ引数は、前のブレンディングステージの結果を使います。最初のテクスチャステージ(ステージ0)の場合、この引数は D3DTA_DIFFUSE と同じ結果になります。前のブレンディングステージがバンプマップテクスチャ(D3DTOP_BUMPENVMAP 処理)を使用している場合、バンプマップ テクスチャの前のステージからテクスチャが選択されます。s が現在のテクスチャ ステージを表し、s – 1 にバンプマップ テクスチャがある場合、この引数はテクスチャ ステージ s – 2 からの結果出力になります。読み取りと書き込みに対する操作が行われます。
このテクスチャ引数は、グーローシェーディング処理中に頂点の成分から補間して得られた拡散光の色です。頂点が拡散色を含まない場合の初期値は 0xFFFFFFFF になります。属性は読み取り専用です。
すべての引数に対応するマスク値です。テクスチャ引数の設定には使用しません。
テクスチャ引数は、グーローシェーディング処理中に頂点の成分から補間された鏡面反射光の色になります。頂点が鏡面反射色を含んでいない場合、初期値は0xFFFFFFFF になります。属性は読み取り専用です。
このテクスチャ引数は、読み書き用のテンポラリレジスタの色になります。D3DTA_TEMP は、D3DPMISCCAPS_TSSARGTEMPが有効な場合にサポートされます。このレジスタの初期値は、(0.0, 0.0, 0.0, 0.0) です。属性は読み書きです。
このテクスチャ引数は、このテクスチャステージのテクスチャのデータになります。属性は読み取り専用です。
このテクスチャ引数は、D3DRS_TEXTUREFACTORについての前回のIDirect3Ddevice9::SetRenderState を呼び出したときのテクスチャ係数になります。属性は読み取り専用です。
修正子フラグフラグ
処理をする前に、アルファ成分をすべての色成分に複製します。これは読み込む時の修飾子です。
引数を反転した色を使用します。たとえば、引数の結果が変数 x によって参照される場合、その値は 1.0 - x になります。これは読み込む時の修飾子です。
このテクスチャステージステートは、そのステージに対する色引数の2つめの引数になります(Arg2でかかれている成分です)。D3DTAで値を指定します。値は、D3DTA_CURRENTです。
このテクスチャステージステートは、そのステージに対する色引数の3つめの引数になります(Arg3でかかれている成分です)。D3DTOP_MULTIPLYADDとD3DTOP_LERPの場合に使います。この設定は、D3DTEXOPCAPS_MULTIPLYADD または D3DTEXOPCAPS_LERPがサポートされていなければなりません。初期値は、D3DTA_CURRENTです。
このテクスチャステージステートは、D3DTEXTUREOP列挙型のメンバによって識別されるテクスチャα合成処理の方法を決定します。最初のテクスチャステージ (ステージ0) の初期値は D3DTOP_SELECTARG1 であり、それ以外のステージの初期値は D3DTOP_DISABLE です。
このテクスチャステージステートは、そのステージに対する最初のα引数で、D3DTA列挙型により識別されます。初期値は D3DTA_TEXTURE です。ステージにテクスチャが設定されていない場合は、D3DTA_DIFFUSE が初期値になります。
このテクスチャステージステートは、そのステージに対する2番目のα引数で、D3DTA列挙型により識別されます。初期値は D3DTA_CURRENT になります。
このテクスチャステージステートは、そのステージに対する3番目のα引数で、D3DTA列挙型により識別されます。D3DTOP_MULTIPLYADDとD3DTOP_LERPの場合に使います。この設定は、D3DTEXOPCAPS_MULTIPLYADD または D3DTEXOPCAPS_LERPがサポートされていなければなりません。初期値は D3DTA_CURRENT になります。
テクスチャ ステージ ステートは、バンプ マッピング行列の2行2列の行列の各係数に対する浮動小数点値になります。初期値は 0.0 です。値は、-8から+8の間でなければなりません。
このテクスチャステージで使用するテクスチャ座標インデックスを指定します。各頂点に関して、8つのテクスチャ座標を設定することができます。もし、頂点データにテクスチャ座標が含まれていない時には、テクスチャ座標には、(0,0)のUV値が使われます。
このフラグは、固定機能頂点処理でのみ使用します。頂点シェーダでは使用しません。頂点シェーダを使ってレンダリングするときは、各ステージのテクスチャインデックスをデフォルト値に設定しなければいけません。各ステージのデフォルトのインデックスは、ステージ インデックスと同じになります。このステートには、テクスチャステージで使用する各頂点の座標セットのゼロから始まるインデックスを設定します。
各アプリケーションでは、(設定されるインデックスとの論理和として) D3DTSS列挙型のいずれかを設定して、テクスチャ トランスフォーム用の入力テクスチャ座標を自動的に生成するようDirect3D に要求できます。
ゼロに解決される D3DTSS_TCI_PASSTHRU を除いて、設定されるインデックスと以下のフラグのいずれかを使用すると、テクスチャ ラッピング モードの決定にインデックスが厳密に使用されます。このフラグは環境マッピングを行う場合には特に有効です。
D3DTSS列挙型は次の種類があります。
頂点フォーマット内の指定されたテクスチャ座標を使用します。
このステージのテクスチャ座標変換の入力テクスチャ座標として、カメラ空間に座標変換された頂点法線を使用すします。
このステージのテクスチャ座標変換の入力テクスチャ座標として、カメラ空間に座標変換された頂点位置座標を使用します。
このステージのテクスチャ座標変換の入力テクスチャ座標として、カメラ空間に座標変換された反射ベクトルを使用します。反射ベクトルは入力頂点位置座標と法線ベクトルから計算されます。
球環境マップのために指定されたテクスチャ座標を使用します。
バンプマップ輝度に使用する浮動小数点数のスケール値です。初期値は 0.0 です。
バンプマップ輝度に使用する浮動小数点数のオフセットです。初期値は 0.0 です。
テクスチャステージのテクスチャ座標の座標変換を制御する D3DTEXTURETRANSFORMFLAGS 列挙型によって指定されるステートです。初期値はD3DTTFF_DISABLEです。
D3DTEXTURETRANSFORMFLAGS列挙型は次の種類があります。
テクスチャ座標はラスタライザに直接渡されます。
ラスタライザは 1D テクスチャ座標を想定します。
ラスタライザは 2D テクスチャ座標を想定します。
ラスタライザは 3D テクスチャ座標を想定します。
ラスタライザは 4D テクスチャ座標を想定します。
テクスチャ座標は、ラスタライザに渡される前に最後の要素ですべて分割されます。たとえば、このフラグが D3DTTFF_COUNT3 と共に指定されている場合、1 番目および 2 番目のテクスチャ座標は、ラスタライザに渡される前に、3 番目の座標で分割されます。
このステージの結果のデスティネーション レジスタを選択するための設定です。D3DTA列挙型で設定されます。
この値は、D3DTA_CURRENT (初期値) または D3DTA_TEMP に設定できます。D3DTA_TEMP は、入力引数として以降のステージに読み込むことができるテンポラリレジスタです。フォグ ブレンダおよびフレーム バッファに渡される最終的な色は D3DTA_CURRENT から取得されるので、最後にアクティブなテクスチャステージステートはカレントへの書き込みに設定しなければいけません。この設定は、D3DPMISCCAPS_TSSARGTEMPが有効な場合にサポートされます。
ステージごとの定数色です。定数色がサポートされているかどうかは、D3DPMISCCAPSのD3DPMISCCAPS_PERSTAGECONSTANTを調べればわかります。D3DTSS_CONSTANTはD3DTA_CONSTANTで使われます。