Freigeben über


Schleife (sm4 – asm)

Gibt eine Schleife an, die durchläuft, bis eine Unterbrechungsanweisung gefunden wird.

loop

 

Bemerkungen

die -Schleife kann unbegrenzt durchlaufen werden, obwohl die gesamte Ausführung des Shaders gezwungen werden kann, zu beenden, nachdem einige Anweisungen ausgeführt wurden.

Flusssteuerungsblöcke können bis zu 64 Tiefe pro Unterroutine und Standard verschachtelt werden. Der HLSL-Compiler generiert keine Unterroutinen, die diesen Grenzwert überschreiten. Das Verhalten von Ablaufsteuerungsanweisungen, die über 64 Ebenen tief pro Unterroutine hinausgehen, ist undefiniert.

Das Tokenformat enthält zur Vereinfachung den Offset der entsprechenden Endloop-Anweisung im Shader.

Im folgenden Beispiel wird gezeigt, wie die Schleifenanweisung verwendet wird.

                loop
                    // example of termination condition
                    if_nz r0.x
                        break
                    endif
                    ...
                endloop

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

 

Assembly des Shadermodells 4 (DirectX HLSL)