if (sm4 – asm)
Branch basierend auf logischem ODER-Ergebnis.
if{_z|_nz} src0.select_component |
---|
Element | BESCHREIBUNG |
---|---|
src0 |
[in] Enthält die Komponente, für die die Bedingung getestet werden soll. |
Bemerkungen
Das Tokenformat enthält den Offset der entsprechenden Endif-Anweisung im Shader als Komfort.
Das folgende Beispiel zeigt, wie Sie diese Anweisung verwenden.
if_z r0.x // if all bits in r0.x are zero
...
else // (optional)
...
endif
if_nz r1.x // if any bit in r0.x is nonzero
...
else // (optional)
...
endif
Beschränkungen
- Die Quellopernden (wenn 4 Komponentenvektoren) müssen eine einzelne Komponentenauswahl verwenden.
- Das von src0 bereitgestellte 32-Bit-Register wird auf Bitebene getestet. Wenn ein Bit nichtzero ist, ist if_z true. Wenn alle Bits 0 sind, ist if_nz wahr.
- Flusssteuerungsblöcke können bis zu 64 Tief pro Unterroutine (und Standard) geschachtelt werden. Der HLSL-Compiler generiert keine Unterroutinen, die diesen Grenzwert überschreiten. Das Verhalten von Ablaufanweisungen, die über 64 Ebenen (pro Unterroutine) hinausgehen, ist nicht definiert.
Diese Anweisung gilt für die folgenden Shaderphasen:
Vertexshader | Geometrie-Shader | Pixelshader |
---|---|---|
x | x | x |
Minimales Shadermodell
Diese Funktion wird in den folgenden Shadermodellen unterstützt.
Shadermodell | Unterstützt |
---|---|
Shadermodell 5 | ja |
Shadermodell 4.1 | ja |
Shadermodell 4 | ja |
Shadermodell 3 (DirectX HLSL) | Nein |
Shadermodell 2 (DirectX HLSL) | Nein |
Shadermodell 1 (DirectX HLSL) | Nein |