m4x3 - ps
Moltiplica un vettore a 4 componenti per una matrice 4x3.
Sintassi
m4x3 dst, src0, src1 |
---|
dove
- dst è il registro di destinazione. Risultato è un vettore a 3 componenti.
- src0 è un registro di origine che rappresenta un vettore a 4 componenti.
- src1 è un registro di origine che rappresenta una matrice 4x3, che corrisponde alla prima di 3 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 |
---|---|---|---|---|---|---|---|---|---|
m4x3 | x | x | x | x | x |
La maschera xyz è necessaria per il registro di destinazione. Nega e modificatori 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) + (src0.w*src1.w);
dest.y = (src0.x*src2.x) + (src0.y*src2.y) + (src0.z*src2.z) + (src0.w*src2.w);
dest.z = (src0.x*src3.x) + (src0.y*src3.y) + (src0.z*src3.z) + (src0.w*src3.w);
Il vettore di input si trova nel registro src0. La matrice di input 4x3 si trova nel registro src1 e le successive due registri superiori, come illustrato nell'espansione seguente. Viene generato un risultato 3D, lasciando invariato l'altro elemento del registro di destinazione (dest.w).
Questa operazione viene comunemente usata per trasformare un vettore di posizione da una matrice che non ha alcun effetto projective, ad esempio si verifica nelle trasformazioni dello spazio modello. Questa istruzione viene implementata come set di prodotti dot, come illustrato di seguito.
m4x3 r0.xyz, r1, c0 will be expanded to:
dp4 r0.x, r1, c0
dp4 r0.y, r1, c1
dp4 r0.z, r1, c2
Swizzle e nega i modificatori non sono validi per il registro src1. Il registro dst e src0 non può essere lo stesso.
Argomenti correlati