OpenGL Shading Language


GLSL (OpenGL Shading Language, Graphics Library Shader Language) — язык высокого уровня для программирования шейдеров. Разработан в целях математических расчетов, которые обычно требуются для выполнения растеризации графики. Синтаксис языка базируется на языке программирования ANSI C, однако, из-за его специфической направленности, из него были исключены многие возможности, для упрощения языка и повышения производительности. В язык включены дополнительные функции и типы данных, например для работы с векторами и матрицами.

OpenGL Shading Language (GLSL) версии 4.0 даёт разработчикам небывалую мощь и гибкость при создании современных интерактивных программ. Появляется возможность напрямую и в полной мере использовать силу современных графических процессоров (Graphics Processing Units или GPUs) благодаря мощному языку и API (англ. Application Programming Interface или интерфейс программирования приложений, интерфейс прикладного программирования). Программу на GLSL не существуют сами по себе, а входят как составная часть в большую программу для OpenGL.

На сегодняшний день OpenGL Shading Language (GLSL) является основной составной частью OpenGL API. Забегая вперёд скажем, что всякая программа для OpenGL внутри себя использует одну или несколько GLSL-программ. Эти мини-программы на GLSL называются шейдерами. Программа-шейдер исполняется в графическом процессоре и реализует алгоритмы эффектов освещенности и закраски для 3-мерных изображений. При этом программа-шейдер способна на большее, чем реализация только алгоритма закраски поверхностей. Они также могут создавать анимацию, мозаику и даже общие математические вычисления. Программа-шейдер предназначена к исполнению прямо в графическом процессоре и часто с применением параллельных вычислений. Например фрагментный шейдер исполняется один раз для каждого пикселя, а вычисления запускаются одновременно в разных потоках графического процессора. Число процессоров в графической подсистеме определяет число одновременных потоков. Всё это делает программы-шейдеры необычайно эффективными и позволяет программисту очень легко задействовать параллельные вычисления. Вычислительная мощность современных графических подсистем впечатляет. В следующей таблице приведены количества шейдер-процессоров в некоторых моделях платах NVIDIA GeForce 900 (источник: https://en.wikipedia.org/wiki/List_of_Nvidia_ graphics_processing_units).

Основное преимущество GLSL перед другими шейдерными языками — переносимость кода между платформами и ОС.

Язык GLSL используется в OpenGL, в OpenGL ES и WebGL используется язык GLSL ES (OpenGL ES Shading Language).

Изначально GLSL 1.10 стал доступен в виде набора расширений GL_ARB_shading_language_100, GL_ARB_shader_objects, GL_ARB_vertex_shader , GL_ARB_fragment_shader. Но уже начиная с OpenGL 2.0, GLSL включен в ядро.