【发布时间】:2019-01-16 22:22:07
【问题描述】:
在我的 WEBGL 着色器中,我正在使用长度未知的循环(编译时)。
do {
sample = texture(uTex, posXY).a;
accumulated += aSample * uAMultiplier;
} while (accumulated < 0.8);
这在 OpenGL 浏览器上按预期工作,但默认情况下 windows chrome/ff 使用角度,展开循环,在这种情况下这是不可能的,导致编译错误。
错误:编译生成时出错
错误:无法链接程序
信息日志:
C:\fakepath(110,28-106): 错误 X4014: 不能在具有发散流控制的循环内进行梯度操作C:\fakepath(59,12-96): 警告 X3570: 梯度指令在循环中使用不同迭代,强制循环展开
C:\fakepath(118,1-82): 错误 X3511: 无法展开循环,循环似乎没有及时终止(1024 次迭代)
是否有防止展开或以其他方式绕过必须循环的解决方案?
【问题讨论】:
标签: glsl directx hlsl angle webgl2