高效GLSL代码的提示

时间:2010-04-10 19:22:25

标签: opengl graphics glsl

是否有在GLSL中编写高效着色器的指南?编译器是否处理大部分优化?

2 个答案:

答案 0 :(得分:21)

这里有一些提示:Common mistakes in GLSL

另外,尽可能避免分支。也就是说,ifwhile语句以及与变量进行比较的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技术。 祝你好运。