m4x4 - ps
Multiplie un vecteur à 4 composants par une matrice 4x4.
Syntaxe
m4x4 dst, src0, src1 |
---|
where
- dst est le registre de destination. Le résultat est un vecteur à 4 composants.
- src0 est un registre source représentant un vecteur à 4 composants.
- src1 est un registre source représentant une matrice 4x4, qui correspond au premier des 4 registres consécutifs.
Notes
Versions du nuanceur de pixels | 1_1 | 1_2 | 1_3 | 1_4 | 2_0 | 2_x | 2_sw | 3_0 | 3_sw |
---|---|---|---|---|---|---|---|---|---|
m4x4 | x | x | x | x | x |
Le masque xyzw (par défaut) est requis pour le registre de destination. Les modificateurs Negate et swizzle sont autorisés pour src0, mais pas pour src1.
Les modificateurs Swizzle et negate ne sont pas valides pour le registre src0. Les registres dst et src0 ne peuvent pas être identiques.
L’extrait de code suivant montre les opérations effectuées.
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);
dest.w = (src0.x*src4.x) + (src0.y*src4.y) + (src0.z*src4.z) + (src0.w*src4.w);
Le vecteur d’entrée se trouve dans le registre src0. La matrice d’entrée 4x4 se trouve dans le registre src1, et les trois registres supérieurs suivants, comme indiqué dans l’extension ci-dessous.
Cette opération est couramment utilisée pour transformer une position par une matrice de projection. Cette instruction est implémentée sous la forme d’un ensemble de produits dot, comme illustré ici.
m4x4 r0.xyzw, r1, c0 will be expanded to:
dp4 r0.x, r1, c0
dp4 r0.y, r1, c1
dp4 r0.z, r1, c2
dp4 r0.w, r1, c3
Rubriques connexes