Modificadores para ps_1_X
Los modificadores de instrucción afectan al resultado de la instrucción antes de escribirla en el registro de destino. Por ejemplo, úselos para multiplicar o dividir el resultado por un factor de dos, o para fijar el resultado entre cero y uno. Los modificadores de instrucción se aplican después de que se ejecute la instrucción, pero antes de escribir el resultado en el registro de destino.
A continuación se muestra una lista de los modificadores.
Modificador | Descripción | Sintaxis | Versión 1_1 | Versión 1_2 | Versión 1_3 | Versión 1_4 |
---|---|---|---|---|---|---|
_x2 | Multiplicar por 2 | instruction_x2 | X | x | x | x |
_x4 | Multiplicar por 4 | instruction_x4 | x | x | x | X |
_x8 | Multiplicar por 8 | instruction_x8 | x | |||
_d2 | Dividir por 2 | instruction_d2 | x | X | x | X |
_d4 | Dividir por 4 | instruction_d4 | x | |||
_d8 | Dividir por 8 | instruction_d8 | x | |||
_Sentado | Saturar (abrazadera de 0 y 1) | instruction_sat | x | x | x | x |
- El modificador de multiplicación multiplica los datos de registro por una potencia de dos después de leerlos. Esto es lo mismo que un desplazamiento a la izquierda.
- El modificador divisor divide los datos de registro por una potencia de dos después de leerlos. Esto es lo mismo que un desplazamiento hacia la derecha.
- El modificador saturado sujeta el intervalo de valores de registro de cero a uno.
Los modificadores de instrucción se pueden usar en instrucciones aritméticas. Es posible que no se usen en las instrucciones de dirección de textura.
Modificador de multiplicación
En este ejemplo se carga el registro de destino (dest) con la suma de los dos colores en los operandos de origen (src0 y src1) y multiplica el resultado por dos.
add_x2 dest, src0, src1
En este ejemplo se combinan dos modificadores de instrucción. En primer lugar, se agregan dos colores en los operandos de origen (src0 y src1). A continuación, el resultado se multiplica por dos y se fija entre 0,0 y 1,0 para cada componente. El resultado se guarda en el registro de destino.
add_x2_sat dest, src0, src1
Modificador divisor
En este ejemplo se carga el registro de destino (dest) con la suma de los dos colores en los operandos de origen (src0 y src1) y divide el resultado por dos.
add_d2 dest, src0, src1
Saturar modificador
Para instrucciones aritméticas, el modificador de saturación sujeta el resultado de esta instrucción en el intervalo de 0,0 a 1,0 para cada componente. En el ejemplo siguiente se muestra cómo usar este modificador de instrucción.
dp3_sat r0, t0_bx2, v0_bx2 ; t0 is bump, v0 is light direction
Esta operación se produce después de cualquier modificador de instrucción de multiplicación o división. _sat se usa con más frecuencia para fijar los resultados del producto de puntos. Sin embargo, también permite la emulación coherente de métodos multipaso donde el búfer de fotogramas siempre está en el intervalo entre 0 y 1, y de la sintaxis multitexture de DirectX 6 y 7.0, en la que se define la saturación para que se produzca en cada fase.
En este ejemplo se carga el registro de destino (dest) con la suma de los dos colores de los operandos de origen (src0 y src1) y se fija el resultado en el intervalo de 0,0 a 1,0 para cada componente.
add_sat dest, src0, src1
En este ejemplo se combinan dos modificadores de instrucción. En primer lugar, se agregan dos colores en los operandos de origen (src0 y src1). El resultado se multiplica por dos y se fija entre 0,0 y 1,0 para cada componente. El resultado se guarda en el registro de destino.
add_x2_sat dest, src0, src1
Temas relacionados