if _ comp - ps
Starten Sie eine , wenn bool - ps... else - ps... endif: ps-Block mit einer Bedingung, die auf Werten basiert, die in einem Shader berechnet werden können. Diese Anweisung wird verwendet, um einen Codeblock basierend auf einer Bedingung zu überspringen.
Syntax
| if _ comp src0, src1 |
|---|
Hierbei gilt:
_comp ist ein Vergleich zwischen den beiden Quellregistern. Folgende Werte sind möglich:
Syntax Vergleich _Gt Größer als _Lt Kleiner als _Ge Größer als oder gleich _Le Kleiner als oder gleich _Eq Gleich _Ne Ungleich src0 ist ein Quellregister. Replizieren von Swizzle ist erforderlich, um eine Komponente auszuwählen.
src1 ist ein Quellregister. Replizieren von Swizzle ist erforderlich, um eine Komponente auszuwählen.
Bemerkungen
| Pixel-Shaderversionen | 1_1 | 1_2 | 1 _ 3 | 1_4 | 2 _ 0 | 2 _ x | 2 _ sw | 3 _ 0 | 3 _ sw |
|---|---|---|---|---|---|---|---|---|---|
| , wenn _ comp | x | x | x | x |
Diese Anweisung wird verwendet, um einen Codeblock basierend auf einer Bedingung zu überspringen.
if (src0 comparison src1)
jump to the corresponding else or endif instruction;
Seien Sie vorsichtig, wenn Sie die Vergleichsmodi "Gleich" und "Nicht gleich" für Gleitkommazahlen verwenden. Da die Rundung während gleitkommaberechnungen erfolgt, kann der Vergleich mit einem Epsilon-Wert (kleine Zahl ungleich 0) durchgeführt werden, um Fehler zu vermeiden.
Es gelten folgende Beschränkungen:
- , _ wenn comp... else - ps... endif: PS-Blöcke (zusammen mit den prädikatierten if-Blöcken) können bis zu 24 Ebenen tief geschachtelt werden.
- Für src0- und src1-Register ist ein Replizieren von Swizzle erforderlich.
- , _ wenn comp-Blöcke mit einer else - vs oder endif - vs-Anweisung enden müssen.
- , _ wenn comp... else - ps... endif: PS-Blöcke können einen Schleifenblock nicht umverschnallen. Der if _ comp-Block muss vollständig innerhalb oder außerhalb des Schleifenblocks sein.
Beispiel
Diese Anweisung bietet eine bedingte dynamische Flusssteuerung.
if_lt r3.x, r4.y
// Instructions to run if r3.x < r4.y
else
// Instructions to run otherwise
endif