m3x4 - ps

Moltiplica un vettore a 3 componenti per una matrice 3x4.

Sintassi

m3x4 dst, src0, src1

 

dove

  • dst è il registro di destinazione. Risultato è un vettore a 4 componenti.
  • src0 è un registro di origine che rappresenta un vettore a 3 componenti.
  • src1 è un registro di origine che rappresenta una matrice 3x4, che corrisponde alla prima di 4 registri consecutivi.

Commenti

Versioni di Pixel shader 1_1 1_2 1_3 1_4 2_0 2_x 2_sw 3_0 3_sw
m3x4 x x x x x

 

Per il registro di destinazione è necessaria la maschera xyzw (impostazione predefinita). I modificatori negati e swizzle sono consentiti per src0 ma non per src1.

Il frammento di codice seguente mostra le operazioni eseguite.

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

Il vettore di input si trova nel registro src0. La matrice di input 3x4 si trova nel registro src1 e le successive due registri superiori, come illustrato nell'espansione seguente.

Questa operazione viene comunemente usata per trasformare un vettore di posizione da una matrice che ha un effetto projective, ma non applica alcuna traduzione. Questa istruzione viene implementata come coppia di prodotti dot, come illustrato qui.

m3x4   r0.xyzw, r1, c0   will be expanded to: 

dp3 r0.x, r1, c0
dp3 r0.y, r1, c1
dp3 r0.z, r1, c2
dp3 r0.w, r1, c3

Istruzioni sul pixel shader