它很流行在GPU内渲染程序内容,例如在演示场景中(绘制单个四边形以填充屏幕并让GPU计算像素)。
雷行军很受欢迎:
这意味着GPU正在每个像素执行一些未知数量的循环迭代(尽管您可以将上限设为maxIterations
)。
具有可变长度的循环如何影响着色器性能?
想象一下简单的光线行进伪代码:
t = 0.f;
while(t < maxDist) {
p = rayStart + rayDir * t;
d = DistanceFunc(p);
t += d;
if(d < epsilon) {
... emit p
return;
}
}
各种主流GPU系列(Nvidia,ATI,PowerVR,Mali,Intel等)如何受到影响?顶点着色器,尤其是片段着色器?
如何进行优化?