m3x4 - ps

Multiplica un vector de 3 componentes por una matriz 3x4.

Sintaxis

m3x4 dst, src0, src1

 

where

  • dst es el registro de destino. El resultado es un vector de 4 componentes.
  • src0 es un registro de origen que representa un vector de 3 componentes.
  • src1 es un registro de origen que representa una matriz de 3x4, que corresponde al primero de 4 registros consecutivos.

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
m3x4 x x x x x

 

La máscara xyzw (predeterminada) es necesaria para el registro de destino. Se permiten modificadores negate y swizzle para src0, pero no para src1.

En el fragmento de código siguiente se muestran las operaciones realizadas.

 
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);
dest.z = (src0.x*src3.x) + (src0.y*src3.y) + (src0.z*src3.z);
dest.w = (src0.x*src4.x) + (src0.y*src4.y) + (src0.z*src4.z);

El vector de entrada está en el registro src0. La matriz de entrada 3x4 está en el registro src1 y los dos registros más altos siguientes, como se muestra en la expansión siguiente.

Esta operación se usa normalmente para transformar un vector de posición mediante una matriz que tiene un efecto projectivo, pero no aplica ninguna traducción. Esta instrucción se implementa como un par de productos de puntos como se muestra aquí.

m3x4   r0.xyzw, r1, c0   will be expanded to: 

dp3 r0.x, r1, c0
dp3 r0.y, r1, c1
dp3 r0.z, r1, c2
dp3 r0.w, r1, c3

Instrucciones del sombreador de píxeles