是否有在GLSL中编写高效着色器的指南?编译器是否处理大部分优化?
答案 0 :(得分:21)
这里有一些提示:Common mistakes in GLSL
另外,尽可能避免分支。也就是说,if
和while
语句以及与变量进行比较的for
语句,例如:
for (int i=0; i<n; i++) {}
会很慢。然而,
for (int i=0; i<10; i++) {}
应该快得多,因为大多数情况下循环展开,并且当并非所有着色单元仍然同时执行相同的代码时,所以没有性能损失。
使用预处理器尝试使用条件编译,而不是分支。
另外,请查看nVidia和ATI特定#pragma
以调整效率。
答案 1 :(得分:2)
虽然许多传统的c优化适用于glsl,但确实存在一些针对GLSL的特定优化。 如果您不熟悉着色器编程,不要在optm上花太多钱,那么编译器可以为您完成非常高效的工作。 当您深入了解图形编程时,您可以收集一些其他高级optm技术。 祝你好运。