dp3 - ps

Calcola il prodotto punto a tre componenti dei registri di origine.

Sintassi

dp3 dst, src0, src1

 

dove

  • dst è il registro di destinazione.
  • src0 è un registro di origine.
  • src1 è un registro di origine.

Commenti

Versioni di Pixel shader 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

 

Il frammento di codice seguente mostra le operazioni eseguite:

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

Questa istruzione viene eseguita nella pipeline vettoriale, scrivendo sempre sui canali di colore. Per la versione 1_4, questa istruzione usa ancora la pipeline vettore, ma può scrivere in qualsiasi canale.

Un'istruzione con una maschera di scrittura con un registro di destinazione .rgb (.xyz) può essere coemessa con dp3, come illustrato di seguito.

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

L'istruzione dp3 può essere modificata usando il modificatore dell'argomento di input di ridimensionamento firmato registro di origine (_bx2) applicato agli argomenti di input se non sono già espansi per l'intervallo dinamico firmato. Per un shader di illuminazione, il modificatore di istruzioni saturazione (_sat) viene spesso usato per bloccare i valori negativi su nero, come illustrato nell'esempio seguente.

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

Istruzioni sul pixel shader