m4x4: frente a
Multiplica un vector de 4 componentes por una matriz 4x4.
Sintaxis
m4x4 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 4 componentes.
- src1 es un registro de origen que representa una matriz de 4x4, que corresponde al primero de 4 registros consecutivos.
Comentarios
Versiones del sombreador de vértices | 1_1 | 2_0 | 2_x | 2_sw | 3_0 | 3_sw |
---|---|---|---|---|---|---|
m4x4 | x | 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.
Los modificadores Swizzle y negate no son válidos para el registro src0. Los registros dest y src0 no pueden ser los mismos.
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) +
(src0.w * src1.w);
dest.y = (src0.x * src2.x) + (src0.y * src2.y) + (src0.z * src2.z) +
(src0.w * src2.w);
dest.z = (src0.x * src3.x) + (src0.y * src3.y) + (src0.z * src3.z) +
(src0.w * src3.w);
dest.w = (src0.x * src4.x) + (src0.y * src4.y) + (src0.z * src4.z) +
(src0.w * src4.w);
El vector de entrada está en el registro src0. La matriz de entrada 4x4 está en el registro src1 y los tres registros más altos siguientes, como se muestra en la expansión siguiente.
Esta operación se usa normalmente para transformar una posición mediante una matriz de proyección. Esta instrucción se implementa como una serie de productos de puntos como se muestra aquí.
m4x4 r0.xyzw, r1, c0 will be expanded to:
dp4 r0.x, r1, c0
dp4 r0.y, r1, c1
dp4 r0.z, r1, c2
dp4 r0.w, r1, c3
Temas relacionados