dp3 - ps

ソース レジスタの 3 成分ドット積を計算します。

構文

dp3 dst、src0、src1

 

where

  • dst は宛先レジスタです。
  • src0 はソース レジスタです。
  • src1 はソース レジスタです。

解説

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

 

次のコード スニペットは、実行された操作を示しています。

dest.x = dest.y = dest.z = dest.w = 
  (src0.x * src1.x) + (src0.y * src1.y) + (src0.z * src1.z);

この命令はベクター パイプラインで実行され、常にカラー チャネルに書き込まれます。 バージョン 1_4 の場合、この命令はベクター パイプラインを引き続き使用しますが、任意のチャネルに書き込む場合があります。

宛先レジスタ .rgb (.xyz) 書き込みマスクを持つ命令は、次に示すように dp3 と共同発行できます。

dp3 r0.rgb, t0, v0            // Copy scalar result to color components
+mov r2.a, t0                 // Copy alpha component from t0 in parallel 

dp3 命令は、 ソース レジスタ符号付きスケーリング 入力引数修飾子 (_bx2) を使用して変更できます。まだ符号付き動的範囲に拡張されていない場合は、その入力引数に適用されます。 照明シェーダーの場合、次の例に示すように、負の値を黒にクランプするために飽和命令修飾子 (_sat) が使用されることがよくあります。

dp3_sat r0, t0_bx2, v0_bx2    // t0 is a bump map, v0 contains the light direction

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