Есть ли какие-либо рекомендации по написанию эффективных шейдеров в GLSL? Компилятор обрабатывает большую часть оптимизации?
Советы по эффективному GLSL-коду
Ответ 1
Несколько советов: Общие ошибки в GLSL
Кроме того, избегайте ветвления, когда это возможно. То есть, операторы if
и while
и операторы for
, которые имеют сравнение с переменной, например:
for (int i=0; i<n; i++) {}
будет медленным. Тем не менее,
for (int i=0; i<10; i++) {}
должен быть намного быстрее, потому что большую часть времени цикл развернут, и когда он не все единицы затенения все еще выполняют один и тот же код одновременно, поэтому нет штрафа за производительность.
Вместо ветвления попробуйте использовать условную компиляцию с использованием препроцессора.
Кроме того, проверьте настройки nVidia и ATI #pragma
, чтобы настроить эффективность.
Ответ 2
В то время как многие традиционные оптимизаторы c работают для glsl, для GLSL существуют определенные оптимизации. Если вы новичок в программировании шейдеров, не тратьте слишком много на optm, ваш компилятор может сделать для вас чрезвычайно эффективные задания. Вы можете собрать некоторые другие усовершенствованные методы optm, когда вы погружаетесь глубже в графическое программирование. удачи.