m3x2 - vs
Multiplie un vecteur à 3 composants par une matrice 3x2.
Syntaxe
m3x2 dst, src0, src1 |
---|
where
- dst est le registre de destination. Le résultat est un vecteur à 2 composants.
- src0 est un registre source représentant un vecteur à 3 composants.
- src1 est un registre source représentant une matrice 3x2, qui correspond au premier des 2 registres consécutifs.
Notes
Versions du nuanceur de vertex | 1_1 | 2_0 | 2_x | 2_sw | 3_0 | 3_sw |
---|---|---|---|---|---|---|
m3x2 | x | x | x | x | x | x |
Le masque xy est requis pour le registre de destination. Les modificateurs Negate et swizzle sont autorisés pour src0, mais pas pour src1.
Les équations suivantes montrent le fonctionnement de l’instruction :
dest.x = (src0.x * src1.x) + (src0.x * src1.y) + (src0.x * src1.z);
dest.y = (src0.x * src2.x) + (src0.y * src2.y) + (src0.z * src2.z);
Le vecteur d’entrée se trouve dans le registre src0. La matrice d’entrée 3x2 se trouve dans le registre src1 et le registre supérieur suivant dans le même fichier de registre, comme illustré dans l’extension suivante. Un résultat 2D est produit, laissant les autres éléments du registre de destination (dest.z et dest.w) non affectés.
Cette opération est couramment utilisée pour les transformations 2D. Cette instruction est implémentée sous la forme d’une paire de produits point, comme illustré ici.
m3x2 r0.xy, r1, c0 which will be expanded to:
dp3 r0.x, r1, c0
dp3 r0.y, r1, c1
Les modificateurs Swizzle et negate ne sont pas valides pour le registre src1. Les registres dest et src0, ou l’un des registres src1+i, ne peuvent pas être identiques.
Rubriques connexes