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