texbeml - ps
輝度補正を伴うフェイク バンプ環境マップ変換を適用します。この処理は、アドレス補正データ (du,dv)、2D バンプ環境行列、輝度を使用してデスティネーション レジスタのテクスチャー アドレス データを修正することで実行されます。
構文
texbeml dst, src |
---|
この場合
- dst はデスティネーション レジスタです。
- src はソース レジスタです。
解説
ピクセル シェーダーのバージョン | 1_1 | 1_2 | 1_3 | 1_4 | 2_0 | 2_x | 2_sw | 3_0 | 3_sw |
---|---|---|---|---|---|---|---|---|---|
texbeml | x | x | x |
src レジスタの赤と緑のカラー データが補正データ (du,dv) として解釈されます。src レジスタの青のカラー データは輝度データとして解釈されます。
この命令では、2D バンプ環境マッピング行列を使用してソース レジスタの赤成分と緑成分を変換します。結果は、デスティネーション レジスタの番号に対応するテクスチャー座標セットに追加されます。輝度値とバイアス テクスチャー ステージの値を使用して、輝度補正が適用されます。結果は現在のテクスチャー ステージのサンプリングに使用されます。
この命令は、フェイク ピクセル単位環境マッピングなど、アドレス補正に基づくさまざまな手法で使用できます。
この処理では du および dv が常に符号付き数値として解釈されます。バージョン 1_0 および 1_1 では、ソースレジスタ符号化スケーリング入力修飾子 (_bx2) を入力引数に対して使用することはできません。
フォーマットが混在しているデータが入力テクスチャーに含まれる場合、この命令はあらかじめ定義されている結果を生成します。サーフェス フォーマットの詳細については、「D3DFORMAT」を参照してください。
// When using this instruction, texture registers must follow // the following sequence: // The texture assigned to stage tn contains the (du,dv) data // The texture assigned to stage t(m) is sampled tex t(n) texbeml t(m), t(n) where m > n
次の例に、この命令の内部で行われる計算を示します。
// 1. New values for texture addresses (u',v') are calculated // 2. Sample the texture using (u',v') // 3. Luminance correction is applied
u' = TextureCoordinates(stage m)u + D3DTSS_BUMPENVMAT00(stage m)*t(n)R + D3DTSS_BUMPENVMAT10(stage m)*t(n)G v' = TextureCoordinates(stage m)v + D3DTSS_BUMPENVMAT01(stage m)*t(n)R + D3DTSS_BUMPENVMAT11(stage m)*t(n)G t(m)RGBA = TextureSample(stage m) using (u',v') as coordinates t(m)RGBA = t(m)RGBA* [(t(n)B * D3DTSS_BUMPENVLSCALE(stage m)) + D3DTSS_BUMPENVLOFFSET(stage m)]
texbem または texbeml 命令によって読み取られたレジスタ データは、別の texbem または texbeml データを使用しない限り、後から読み取ることはできません。
// This example demonstrates the validation error caused by // t0 being reread ps_1_1 tex t0 texbem t1, t0 add r0, t1, t0 (Instruction Error) (Statement 4) Register data that has been read by texbem or texbeml instruction cannot be read by other instructions
例
次に示すシェーダーの例では、テクスチャー マップとテクスチャー ステージが指定されています。
ps_1_1 tex t0 ; Define t0 to get a 2-tuple DuDv texbeml t1, t0 ; Compute (u',v') ; Apply luminance correction ; Sample t1 using (u',v') mov r0, t1 ; Output result
この例では、テクスチャー ステージに次のテクスチャーが必要になります。
- ステージ 0 には、補正データ (du,dv) を含むバンプ マップを割り当てます。
- ステージ 1 には、カラー データを含むテクスチャー マップを割り当てます。
- texbeml によって、サンプリング対象のテクスチャー ステージに行列データが設定されます。これは、補正データと行列が同じテクスチャー ステージを使用する、固定機能パイプラインの機能とは異なります。