次の方法で共有


texbeml - ps

輝度補正を使用して偽のバンプ環境マップ変換を適用します。 これは、宛先レジスタのテクスチャ アドレス データを変更し、アドレス摂動データ (du,dv)、2D バンプ環境マトリックス、および輝度を使用して行います。

構文

texbeml dst, src

 

where

  • 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 の場合、入力引数で Source Register Signed Scaling 入力修飾子 (_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(ステージ m)*t(n)R +

D3DTSS_BUMPENVMAT10(ステージ m)*t(n)G

v' = TextureCoordinates(stage m)v +

D3DTSS_BUMPENVMAT01(ステージ m)*t(n)R +

D3DTSS_BUMPENVMAT11(ステージ m)*t(n)G

t(m)RGBA = (u',v') を座標として使用する TextureSample(stage m)

t(m)RGBA = t(m)RGBA *

[(t(n)B * D3DTSS_BUMPENVLSCALE(ステージ m)) +

D3DTSS_BUMPENVLOFFSET(ステージ 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 は、サンプリングされるテクスチャ ステージにマトリックス データを設定します。 これは、摂動データとマトリックスが同じテクスチャ ステージを占める固定関数パイプラインの機能とは異なります。

ピクセル シェーダーの手順