if_comp - ps

Inicie un bloque if bool - ps...else - ps...endif - ps, con una condición basada en valores que se pueden calcular en un sombreador. Esta instrucción se usa para omitir un bloque de código, en función de una condición.

Sintaxis

if_comp src0, src1

 

Donde:

  • _comp es una comparación entre los dos registros de origen. Puede tener uno de los valores siguientes:

    Sintaxis De comparación
    _gt Mayor que
    _lt Menor que
    _ge Mayor o igual que
    _le Menor o igual que
    _eq Igual a
    _ne No igual a

     

  • src0 es un registro de origen. Se requiere replicar swizzle para seleccionar un componente.

  • src1 es un registro de origen. Se requiere replicar swizzle para seleccionar un componente.

Comentarios

Versiones del sombreador de píxeles 1_1 1_2 1_3 1_4 2_0 2_x 2_sw 3_0 3_sw
if_comp x x x x

 

Esta instrucción se usa para omitir un bloque de código, en función de una condición.

if (src0 comparison src1)
   jump to the corresponding else or endif instruction;

Tenga cuidado de usar los modos de comparación Es igual que y No es igual a en números de punto flotante. Dado que el redondeo se produce durante los cálculos de punto flotante, la comparación se puede realizar con un valor epsilon (número distinto de cero) para evitar errores.

Entre las restricciones se incluyen:

  • Bloques if_comp...else - ps...endif - ps (junto con los bloques de predicado if) pueden anidarse hasta a 24 capas de profundidad.
  • Los registros src0 y src1 requieren una replicación de swizzle.
  • Los bloques if_comp deben terminar con una instrucción else - vs o endif - vs.
  • Los bloques if_comp...else - ps...endif - ps no pueden delimitar un bloque de bucle. El bloque if_comp debe estar completamente dentro o fuera del bloque de bucle.

Ejemplo

Esta instrucción proporciona un control de flujo dinámico condicional.

if_lt r3.x, r4.y
// Instructions to run if r3.x < r4.y

else
// Instructions to run otherwise

endif

Instrucciones del sombreador de píxeles