loop (sm4 - asm)
Specifies a loop which iterates until a break instruction is encountered.
loop can iterate indefinitely, although overall execution of the Shader may be forced to terminate after some number of instructions are executed.
Flow control blocks can nest up to 64 deep per subroutine and main. The HLSL compiler will not generate subroutines that exceed this limit. Behavior of control flow instructions beyond 64 levels deep per subroutine is undefined.
The token format contains the offset of the corresponding endloop instruction in the Shader as a convenience.
The following example shows how to use the loop instruction.
loop // example of termination condition if_nz r0.x break endif ... endloop
This instruction applies to the following shader stages:
|Vertex Shader||Geometry Shader||Pixel Shader|
This function is supported in the following shader models.
|Shader Model 5||yes|
|Shader Model 4.1||yes|
|Shader Model 4||yes|
|Shader Model 3 (DirectX HLSL)||no|
|Shader Model 2 (DirectX HLSL)||no|
|Shader Model 1 (DirectX HLSL)||no|