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.
Temas relacionados