loop (sm4 - asm)

指定循环,该循环在遇到中断指令之前进行迭代。

loop

 

备注

循环 可以无限期迭代,尽管在执行一定数量的指令后可能会强制终止着色器的整体执行。

每个子例程和main,流控制块最多可嵌套 64 个深度。 HLSL 编译器不会生成超过此限制的子例程。 未定义每个子例程超过 64 个级别的控制流指令的行为。

为方便起见,标记格式包含着色器中相应 endloop 指令的偏移量。

以下示例演示如何使用 循环指令。

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

此指令适用于以下着色器阶段:

顶点着色器 几何着色器 像素着色器
x x x

 

最小着色器模型

以下着色器模型中支持此函数。

着色器模型 支持
着色器模型 5
着色器模型 4.1
着色器模型 4
着色器模型 3 (DirectX HLSL)
着色器模型 2 (DirectX HLSL)
着色器模型 1 (DirectX HLSL)

 

着色器模型 4 程序集 (DirectX HLSL)