据我了解:由于现代GPU中的线程扭曲体系结构,通常在着色器程序中创建太多if
语句被认为是一个坏习惯。不过,我有一些关于在GLSL着色器程序中使用分支的一般性问题,但我找不到其他地方的答案:
片段着色器中的分支与顶点着色器中的分支相比有何惩罚?通常,几个顶点可能会生成数千个片段,因此我假设我们可以允许自己在顶点着色器中进行更多分支。我是对还是错?
几何着色器中的分支引入了与顶点着色器相同的性能缺陷吗?
在着色器程序中使用if / else
和三元() ? :
运算符之间是否有性能差异?
如果我们可以通过这些switch
案例来表达分支,是否更有效?
我知道这些问题可能太含糊或过于笼统,但我宁愿使用长度较长的答案,也不愿使用一系列的单一答案。而且我也在寻找常识,因此,非常感谢您提供任何答案,或参考解释此内容的资源或获得的任何帮助。