Freigeben über


dp3 – ps

Berechnet das Dreikomponentenpunktprodukt der Quellregister.

Syntax

dp3 dst, src0, src1

 

where

  • dst ist das Zielregister.
  • src0 ist ein Quellregister.
  • src1 ist ein Quellregister.

Bemerkungen

Pixel-Shaderversionen 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

 

Der folgende Codeausschnitt zeigt die ausgeführten Vorgänge:

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

Diese Anweisung wird in der Vektorpipeline ausgeführt und schreibt immer in die Farbkanäle aus. Für Version 1_4 verwendet diese Anweisung weiterhin die Vektorpipeline, kann jedoch in einen beliebigen Kanal schreiben.

Eine Anweisung mit einer RGB-Schreibmaske (.xyz) des Zielregisters kann zusammen mit dp3 ausgestellt werden, wie unten gezeigt.

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

Die dp3-Anweisung kann mit dem Eingabeargumentmodifizierer " Source Register Signed Scaling" (_bx2) geändert werden, der auf die Eingabeargumente angewendet wird, wenn sie nicht bereits in den dynamischen Bereich mit Vorzeichen erweitert wurden. Für einen Beleuchtungsshader wird häufig der Sättigungs-Anweisungsmodifizierer (_sat) verwendet, um die negativen Werte in Schwarz zu spannen, wie im folgenden Beispiel gezeigt.

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

Pixel-Shaderanweisungen