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