loop (sm4 - asm)
Gibt eine Schleife an, die iteriert, bis eine Breakanweisung gefunden wird.
| loop |
|---|
Bemerkungen
-Schleife kann unbegrenzt iterieren, obwohl die gesamte Ausführung des Shaders möglicherweise gezwungen wird, zu beenden, nachdem einige Anweisungen ausgeführt wurden.
Flow Steuerblöcke können bis zu 64 Tiefe pro Unterroutine und Main schachteln. Der HLSL-Compiler generiert keine Unterroutinen, die diesen Grenzwert überschreiten. Das Verhalten von Ablaufsteuerungsanweisungen über 64 Ebenen hinaus pro Unterroutine ist nicht definiert.
Das Tokenformat enthält der Einfachheit halber den Offset der entsprechenden Endloopanweisung im Shader.
Im folgenden Beispiel wird die Verwendung der Schleifenanweisung veranschaulicht.
loop
// example of termination condition
if_nz r0.x
break
endif
...
endloop
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 |