Partager via


texm3x2tex - ps

Effectue la dernière ligne d’une multiplication de matrice 3x2 et utilise le résultat pour effectuer une recherche de texture. texm3x2tex doit être utilisé conjointement avec l’instruction texm3x2pad - ps .

Syntaxe

texm3x2tex dst, src

 

where

  • dst est le registre de destination.
  • src est un registre source.

Notes

Versions du nuanceur de pixels 1_1 1_2 1_3 1_4 2_0 2_x 2_sw 3_0 3_sw
texm3x2tex x x x

 

L’instruction est utilisée comme l’une des deux instructions représentant une opération de multiplication de matrice 3x2. Cette instruction doit être utilisée avec l’instruction texm3x2pad - ps .

Lorsque vous utilisez ces deux instructions, les registres de texture doivent utiliser la séquence suivante.

 
tex t(n)                      // Define tn as a standard 3-vector (tn must 
                              // be defined in some way before it is used)
texm3x2pad  t(m),   t(n)      // where m > n
                              // Perform first row of matrix multiply
texm3x2tex  t(m+1), t(n)      // Perform second row of matrix multiply 
                              // to get (u,v) to sample texture 
                              // associated with stage m+1

Voici plus de détails sur la façon dont la multiplication 3x2 est effectuée.

L’instruction texm3x2pad exécute la première ligne de la multiplication pour rechercher u'.

u' = t(n)RGB * TextureCoordinates(stage m)UVW

L’instruction texm3x2tex exécute la deuxième ligne de la multiplication pour rechercher v'.

v' = t(n)RGB * TextureCoordinates(étape m+1)UVW

L’instruction texm3x2tex échantillonne la texture sur scène (m+1) avec (u',v') et stocke le résultat dans t(m+1).

t(m+1)RGB = TextureSample(étape m+1)RVB utilisant (u', v' ) comme coordonnées

Exemples

Voici un exemple de nuanceur avec les cartes de texture et les étapes de texture identifiées.

ps_1_1
tex t0                // Bind texture in stage 0 to register t0
texm3x2pad  t1,  t0   // First row of matrix multiply
texm3x2tex  t2,  t0   // Second row of matrix multiply to get (u,v)
                      // with which to sample texture in stage 2
mov r0, t2            // Output result

Cet exemple nécessite les textures suivantes dans les étapes de texture suivantes.

  • L’étape 0 prend une carte avec des données de perturbation (x,y,z).
  • L’étape 1 contient les coordonnées de texture. Aucune texture n’est requise à l’étape de texture.
  • L’étape 2 contient à la fois les coordonnées de texture ainsi qu’une texture 2D définie à cette étape de texture.

Instructions du nuanceur de pixels