Compartir a través de


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

Instrucciones del sombreador de píxeles