«Глобальные переменные и интерфейсные блоки могут быть объявлены с помощью унифицированного определителя. Это означает, что значение не изменяется между несколькими выполнениями шейдера во время рендеринга примитива (т. е. во время вызова glDraw *). Эти значения задаются пользователем из API OpenGL. Они постоянны, но не константы времени компиляции (а не const). "OpenGL Почему нужны однородные переменные (вместо простых констант)
http://www.opengl.org/wiki/Type_Qualifier_(GLSL)#Storage_qualifier
Я предполагаю, что я спрашиваю, почему унифицированные переменные не могут быть просто постоянными во время компиляции, а также.
Юмор, даже если они были постоянными, которые ничего не изменили бы. Константные переменные могут использовать один и тот же пул хранения как однородные переменные. Фактически, если вы когда-либо перечисляете список униформ в связанной программе GLSL на NV-драйвере, вы заметите, что он переименовывает константы в соответствие с строками '_ _ _0' и присваивает им одинаковые местоположения. –