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 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

instrucciones del sombreador de píxeles de