m3x3 - ps
Multiplica un vector de 3 componentes por una matriz 3x3.
Sintaxis
m3x3 dst, src0, src1 |
---|
where
- dst es el registro de destino. El resultado es un vector de 3 componentes.
- src0 es un registro de origen que representa un vector de 3 componentes.
- src1 es un registro de origen que representa una matriz 3x3, que corresponde al primero de 3 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 |
---|---|---|---|---|---|---|---|---|---|
m3x3 | x | x | x | x | x |
La máscara xyz 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);
El vector de entrada está en el registro src0. La matriz de entrada 3x3 está en el registro src1 y los dos registros más altos siguientes, como se muestra en la expansión siguiente. Se genera un resultado 3D, lo que deja sin afectar al otro elemento del registro de destino (dest.w).
Esta operación se usa normalmente para transformar vectores normales durante los cálculos de iluminación. Esta instrucción se implementa como un conjunto de productos de puntos, como se muestra a continuación.
m3x3 r0.xyz, r1, c0 which will be expanded to:
dp3 r0.x, r1, c0
dp3 r0.y, r1, c1
dp3 r0.z, r1, c2
Temas relacionados