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
関連トピック