if_comp - vs

Inicie un bloque if bool - vs...else - vs...endif - vs con una condición basada en valores que se puedan 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 vértices 1_1 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_lt src0, 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:

  • Los bloques if_comp...else - vs...endif - vs (junto con los bloques if predicados) se pueden anidar hasta 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 - vs...endif - vs no pueden estragar un bloque de bucle. El bloque if_comp debe estar completamente dentro o fuera del bloque loop - vs.

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 vértices