if (sm4 - asm)
Verzweigung basierend auf logischem OR-Ergebnis.
| if{ _ z|_nz} src0.select-Komponente _ |
|---|
| Element | BESCHREIBUNG |
|---|---|
| src0 |
[in ] Enthält die Komponente, für die die Bedingung zu testen ist. |
Bemerkungen
Das Tokenformat enthält der Einfachheit halber den Offset der entsprechenden endif-Anweisung im Shader.
Im folgenden Beispiel wird die Verwendung dieser Anweisung veranschaulicht.
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 ungleich 0 (null) ist, ist _ z true. Wenn alle Bits 0 (null) sind, _ ist "nz" "true".
- Flow Steuerblöcke können bis zu 64 Tiefe pro Unterroutine (und Hauptroutine) schachteln. Der HLSL-Compiler generiert keine Unterroutinen, die diesen Grenzwert überschreiten. Das Verhalten von Ablaufsteuerungsanweisungen über 64 Ebenen hinweg (pro Unterroutine) ist nicht definiert.
Diese Anweisung gilt für die folgenden Shaderstufen:
| 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 |