我可以使用条件语句来最小化纹理的平均读取,但是如果条件语句的成本很高,就像CPU一样(阻止预测等),它可能会导致复杂的代码无法获得甚至更少效率。它们的成本是否更高?
答案 0 :(得分:3)
着色器中的条件语句是否需要更高的成本?
一如既往:这取决于。没有什么是免费的。现代GPU可以在基于统一条件的分支上很好地完成。真正伤害的是非均匀控制流程,这自然会导致不使用所有可用的着色器ALU。使用嵌套条件和/或循环,您可以轻松地为每个SIMT组提供一个单独的活动核心,这意味着可以消除31/32到63/64的潜在计算能力。
我可以使用条件语句来最小化纹理的平均读取
在非均匀控制流程中注意纹理采样。根据规范,这将导致未定义的值。这里的问题是你搞砸了texcoords的衍生物的计算,因此如果需要使用放大或缩小滤镜以及使用哪个mipmap级别,GPU可以决定。