m3x2 - ps

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

Sintaxis

m3x2 dst, src0, src1

 

where

  • dst es el registro de destino. El resultado es un vector de 2 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 3x2, que corresponde al primero de 2 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
m3x2 x x x x x

 

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

Las ecuaciones siguientes muestran cómo funciona la instrucción:

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

El vector de entrada está en el registro src0. La matriz de entrada 3x2 está en el registro src1 y el siguiente registro superior en el mismo archivo de registro, como se muestra en la siguiente expansión. Se genera un resultado 2D, dejando los demás elementos del registro de destino (dest.z y dest.w) sin verse afectados.

Esta operación se usa normalmente para transformaciones 2D. Esta instrucción se implementa como un par de productos de puntos como se muestra aquí.

m3x2   r0.xy, r1, c0   which will be expanded to:

dp3   r0.x, r1, c0
dp3   r0.y, r1, c1

Los modificadores Swizzle y negate no son válidos para el registro src1. El registro dst y src0, o cualquiera de los registros src1+i, no puede ser el mismo.

Instrucciones del sombreador de píxeles