M3X2-PS

Multiplie un vecteur à 3 composants par une matrice matrice.

Syntaxe

M3X2 DST, src0, src1

where

  • l’heure d’été est le registre de destination. Le résultat est un vecteur à 2 composants.
  • src0 est un registre source qui représente un vecteur à 3 composants.
  • src1 est un registre source qui représente une matrice matrice, qui correspond au premier des 2 registres consécutifs.

Remarques

Versions de nuanceur de pixels 1_1 1_2 1 _ 3 1_4 2 _ 0 2 _ x 2 _ logiciels 3 _ 0 3 _ logiciels
m3x2 x x x x x

Le masque XY est requis pour le registre de destination. Les modificateurs de négation et Swizzle sont autorisés pour src0, mais pas pour src1.

Les équations suivantes illustrent le fonctionnement de l’instruction :

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);

Le vecteur d’entrée se trouve dans Register src0. La matrice d’entrée matrice se trouve dans Register 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 généré, 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 en tant que paire de produits scalaires comme indiqué 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 négation ne sont pas valides pour le registre src1. Les registres DST et src0, ou l’un des registres src1 + i, ne peuvent pas être identiques.

Instructions sur le nuanceur de pixels