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

Shadermodell 4-Assembly (DirectX HLSL)