次の方法で共有


texbem - ps

フェイク バンプ環境マップ変換を適用します。この処理は、アドレス補正データ (du,dv) および 2D バンプ環境行列を使用してデスティネーション レジスタのテクスチャー アドレス データを修正することで実行されます。

構文

texbem dst, src

この場合

  • dst はデスティネーション レジスタです。
  • src はソース レジスタです。

解説 

ピクセル シェーダーのバージョン 1_1 1_2 1_3 1_4 2_0 2_x 2_sw 3_0 3_sw
texbem x x x

src レジスタの赤と緑のカラー データが補正データ (du,dv) として解釈されます。

この命令では、2D バンプ環境マッピング行列を使用してソース レジスターの赤成分と緑成分を変換します。結果は、デスティネーション レジスタ番号に対応するテクスチャー座標セットに追加され、現在のテクスチャー ステージをサンプリングする際に使用されます。

この処理では du および dv が常に符号付き数値として解釈されます。バージョン 1_0 および 1_1 では、ソースレジスタ符号化スケーリング入力修飾子 (_bx2) を入力引数に対して使用することはできません。

入力テクスチャーに符号化フォーマット データが含まれる場合、この命令はあらかじめ定義されている結果を生成します。フォーマットが混用されたデータは、最初の 2 つのチャンネルに符号付きデータが含まれている場合にのみ機能します。サーフェス フォーマットの詳細については、「D3DFORMAT」を参照してください。

フェイク ピクセル単位環境マッピングやディフューズ ライティング (バンプ マッピング) など、アドレス補正に基づくさまざまな手法にこの命令を使用できます。

この命令を使用する際には、テクスチャー レジスタで次の手順に従う必要があります。

 // The texture assigned to stage t(n) contains the (du,dv) data // The texture assigned to stage t(m) is sampled tex     t(n)                   texbem  t(m),  t(n)      where m > n 

命令内の計算は次のように処理されます。

 // 1. New values for texture addresses (u',v') are calculated // 2. Sample the texture using (u',v') 
 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 

texbem - ps または texbeml - ps 命令によって読み取られたレジスタ データは、別の texbem - ps または texbeml - ps データを使用しない限り、後から読み取ることはできません。

 // 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 texbem t1, t0       ; Compute (u',v')                     ; Sample t1 using (u',v') mov r0, t1          ; Output result 

texbem では、テクスチャー ステージに次のテクスチャーが必要になります。

  • ステージ 0 には、補正データ (du,dv) を含むバンプ マップを割り当てます。
  • ステージ 1 では、カラー データを含むテクスチャー マップを使用します。
  • この命令によって、サンプリング対象のテクスチャー ステージに行列データを設定します。
  • これは、補正データと行列が同じテクスチャー ステージを使用する、固定機能パイプラインの機能とは異なります。