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

Shader Model 4-Assembly (DirectX HLSL)