Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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 en 2 | instruction_d2 | X | X | X | X |
| _d4 | Dividir por 4 | instruction_d4 | X | |||
| _d8 | Dividir en 8 | instruction_d8 | X | |||
| _sábado | Saturación (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 de división divide los datos de registro por una potencia de dos después de leerlos. Esto es lo mismo que un desplazamiento a la derecha.
- El modificador saturar fija 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 de 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). 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 de divisió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 divide el resultado en dos.
add_d2 dest, src0, src1
Saturar modificador
Para obtener instrucciones aritméticas, el modificador de saturación fija 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. Sin embargo, también permite la emulación coherente de los métodos multipass donde el búfer de fotogramas siempre está en el intervalo de 0 a 1, y de directX 6 y 7.0 sintaxis multitexture, 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 en 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