使用Shader Model 2.0的HLSL for循环:错误X3511无法展开循环

bar*_*boy 8 shader loops for-loop hlsl

在Shader Model 2.0下的HLSL着色器中编译以下for循环时,我得到错误X3511.

for (int x = -5; x <= 5; x++)
{
    for (int y = -5; y <= 5; y++)
    {
            ...
Run Code Online (Sandbox Code Playgroud)

错误内容如下:无法展开循环,循环似乎没有及时终止(5次迭代),使用[unroll(n)]属性强制使用更高的数字.

我知道这个错误消息,但是我没有在for语句的条件部分使用变量 - 这是一个硬编码的x <= 5条件.这有什么不对?

提前致谢!

mil*_*aki 10

试试这个:

[unroll(121)] for (int i=0; i<121; i++)
{
    int x = i / (int)11 - 5;
    int y = i % (int)11 - 5;
}
Run Code Online (Sandbox Code Playgroud)