高效GLSL代码的提示

Bry*_*man 18 opengl graphics glsl

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

Gha*_*nPL 21

这里有一些提示:GLSL中的常见错误

另外,尽可能避免分支.也就是说,ifwhile语句和for语句具有带有可变的比较,例如:

for (int i=0; i<n; i++) {}
Run Code Online (Sandbox Code Playgroud)

会很慢.然而,

for (int i=0; i<10; i++) {}
Run Code Online (Sandbox Code Playgroud)

应该更快,因为大多数时候循环被展开,并且当并非所有着色单元仍然同时执行相同的代码时,所以没有性能损失.

而不是分支,尝试使用预处理器使用条件编译.

另外,查看nVidia和ATI特定的#pragmas来调整效率.