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