if_comp - vs
Avviare un valore bool if - vs...else - vs...endif - vs block, con una condizione basata su valori che possono essere calcolati in uno shader. Questa istruzione viene usata per ignorare un blocco di codice, in base a una condizione.
Sintassi
if_comp src0, src1 |
---|
Dove:
_comp è un confronto tra i due registri di origine. I possibili valori sono i seguenti:
Sintassi Confronto _Gt Maggiore di _Tenente Minore di _Ge Maggiore di o uguale a _le Minore di o uguale a _Eq Uguale a _ne Diverso da src0 è un registro di origine. Per selezionare un componente, è necessario eseguire la replica swizzle.
src1 è un registro di origine. Per selezionare un componente, è necessario eseguire la replica swizzle.
Osservazioni:
Versioni del vertex shader | 1_1 | 2_0 | 2_x | 2_sw | 3_0 | 3_sw |
---|---|---|---|---|---|---|
if_comp | x | x | x | x |
Questa istruzione viene usata per ignorare un blocco di codice, in base a una condizione.
if_lt src0, src1
jump to the corresponding else or endif instruction;
Prestare attenzione usando le modalità di confronto uguali e non uguali ai numeri a virgola mobile. Poiché l'arrotondamento si verifica durante i calcoli a virgola mobile, è possibile eseguire il confronto con un valore epsilon (numero diverso da zero) per evitare errori.
Tali restrizioni includono:
- if_comp...else - vs...endif - vs blocchi (insieme al predicato se blocchi) possono essere annidati fino a 24 livelli profondi.
- I registri src0 e src1 richiedono uno swizzle replicato.
- if_comp blocchi devono terminare con un'istruzione else - vs o endif - vs .
- if_comp...else - vs...endif: i blocchi e i blocchi non possono creare un blocco ciclo. Il blocco if_comp deve trovarsi completamente all'interno o all'esterno del ciclo , rispetto al blocco.
Esempio
Questa istruzione fornisce il controllo del flusso dinamico condizionale.
if_lt r3.x, r4.y
// Instructions to run if r3.x < r4.y
else
// Instructions to run otherwise
endif
Argomenti correlati