texm3x3tex - ps

Realiza una multiplicación de matriz 3x3 y usa el resultado para realizar una búsqueda de texturas. texm3x3tex debe usarse con dos instrucciones texm3x3pad - ps .

Sintaxis

texm3x3tex dst, src

 

where

  • dst es el registro de destino.
  • src es un registro de origen.

Comentarios

Versiones del sombreador de píxeles 1_1 1_2 1_3 1_4 2_0 2_x 2_sw 3_0 3_sw
texm3x3tex x x x

 

Esta instrucción se usa como final de tres instrucciones que representan una operación de multiplicación de matriz 3x3, seguida de una búsqueda de texturas. La matriz 3x3 consta de las coordenadas de textura de la tercera fase de textura y las dos fases de textura anteriores. El vector de tres componentes resultante (u,v,w) se usa para muestrear la textura en la fase 3. Se omite cualquier textura asignada a las dos fases de textura anteriores. La multiplicación de matriz 3x3 suele ser útil para orientar un vector normal al espacio tangente correcto para la superficie que se representa.

Esta instrucción debe usarse con la instrucción texm3x3pad. Los registros de textura deben usar la secuencia siguiente.

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

Este es más detallado sobre cómo se logra la multiplicación 3x3.

La primera instrucción texm3x3pad realiza la primera fila de la multiplicación para buscar u'.

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

La segunda instrucción texm3x3pad realiza la segunda fila de la multiplicación para buscar v'.

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

La instrucción texm3x3spec realiza la tercera fila de la multiplicación para buscar w'.

w' = TextureCoordinates(stage m+2)UVW * t(n)RGB

Por último, las muestras de instrucciones texm3x3tex t(m+2) con (u',v',w') y almacenan el resultado en t(m+2).

t(m+2)RGBA = TextureSample(stage m+2)RGBA using (u' , v' , w' ) as coordinates.

Ejemplos

Este es un sombreador de ejemplo con los mapas de textura identificados y las fases de textura identificadas.

ps_1_1
tex t0                // Bind texture in stage 0 to register t0
texm3x3pad  t1,  t0   // First row of matrix multiply
texm3x3pad  t2,  t0   // Second row of matrix multiply
texm3x3tex  t3,  t0   // Third row of matrix multiply to get a
                      // 3-vector with which to sample texture at 
mov r0, t3            // stage 3 output result

En este ejemplo se requiere la siguiente configuración de la fase de textura.

  • A la fase 0 se le asigna un mapa de texturas con datos normales. Esto se conoce a menudo como un mapa de golpes. Los datos son normales (XYZ) para cada elemento de textura. El conjunto de coordenadas de textura 0 define cómo muestrear este mapa normal.
  • El conjunto de coordenadas de textura 1 se asigna a la fila 1 de la matriz 3x3. Se omite cualquier textura asignada a la fase 1.
  • El conjunto de coordenadas de textura 2 se asigna a la fila 2 de la matriz 3x3. Se omite cualquier textura asignada a la fase 2.
  • El conjunto de coordenadas de textura 3 se asigna a la fila 3 de la matriz 3x3. Una textura de volumen o cubo debe establecerse en la fase 3 para la búsqueda por el vector 3D transformado.

Instrucciones del sombreador de píxeles