Microsoft DirectX 8.0 (C++)

dp3

ソース オペランド レジスタの 2 色の 3 要素ベクトル内積をロードする。

dp3   tDest, tSrc0, tSrc1

レジスタ

tDest
処理の結果を保持するデスティネーション レジスタ。
tSrc0
入力引数を指定するソース レジスタ。
tSrc1
入力引数を指定するソース レジスタ。

注意

この命令はスカラーの結果を生成するが、それを指定されたすべての出力チャネルに複製する。

dp3 r, s1, s2    ; s1 と s2 の内積、全てのチャンネルに複製

dp3 命令は基本的にベクトル演算であるため、常にベクトル パイプラインで実行されることに注意すること。これをアルファ複製 ny入力引数修飾子 (.a) と共に使用した場合、この入力引数修飾子は単に結果がアルファ チャネルにも伝達されることを示す。つまり、dp3 はカラー処理も行う場合にのみアルファ処理として指定でき、同じ引数を使用しなければならない。

dp3 r0.rgb, t0, v0
dp3 r0.a,   t0, v0

または、次のようにしても同じである。

dp3 r0, t0, v0

この場合、dp3 演算のグレースケールの結果が、r0 のカラー チャネルとアルファ チャネルの両方にコピーされる。

結果のアルファ チャネルでは、異なる命令を指定できる。

dp3 r0.rgb, t0, v0
mul r0.a,   t0, v0

dp3 命令は、入力引数が符号付き動的範囲に展開されていない場合、通常、入力引数に適用された符号化スケーリング入力引数修飾子 (_bx2) を利用する。ライティングについて使用する場合は、通常、次の例のように、彩度命令修飾子 (_sat) を使用して負の値を黒に制限する。

dp3_sat r0, t0_bx2, v0_bx2    ; t0 はバンプ、v0 はライトの方向ベクトル