Глобальные переменные не существуют в GLSL. Переменные gl_*
являются жестко закодированными ( воспринимается как автоматически добавленное время компиляции ) для доступа к непрограммируемым элементам конвейера из шейдера. В Core OpenGL 3.0 большинство из них было удалено, включая gl_LightSource
. Теперь ожидается, что пользователь будет обрабатывать свои собственные матрицы и источники света и отправлять их шейдерам в форме. Если вы хотите увидеть список всех оставшихся, вы должны посмотреть справочные страницы GLSL .
То, что вы хотите, это униформа. Если вы хотите синхронизировать униформы между шейдерами, сохраните местоположение униформы и выполните перебор всех ваших программ, чтобы загрузить униформу в каждый шейдер.