GLSL
OpenGL Shanding LanguageはホストプログラムにC言語がよく使われていることを背景にして、それによく似た多くの演算子、加えてベクトル演算に特化した特殊な演算子(Tupleを返すSwizzle演算など)も提供している。このことにより、シェーダー開発者はシェーダーを柔軟にかつ効率よく書くことができる。GLSLはポインタを除くCやC++での演算子を含んでいる。
GLSLはOpenGL仕様とともにバージョンアップされている。OpenGL 3.2までは、対応するGLSLのバージョン番号はOpenGL本体のバージョン番号と無関係にナンバリングされていたが、OpenGL 3.3以降は同一の番号が割り当てられるようになった。
GLSL ESもOpenGL ES仕様とともに更新されている。
OpenGL Shading LanguageをサポートするどんなハードウェアベンダーのGPU上でも動作するシェーダーを書くことができる能力を持つ。
それぞれのハードウェアベンダーはデバイスドライバー内にGLSLコンパイラを含めることができるので、そのGPUのアーキテクチャに最適化されたコードを生成することができる。
などが挙げられる。従来の固定機能シェーダーに対するデメリットとしては、
シェーダーのコンパイルおよびアタッチなど、レンダリングのための準備作業が増える。
OpenGL APIの他に、GLSLの学習コストがかかる。
GPU特性やハードウェア仕様を把握してGLSLコードを記述する必要があり、CPUと比較してチューニングが難しい。
などが挙げられる。
なお、GLSLの派生規格として、組み込み環境向けのOpenGL ES用のシェーダー言語「GLSL ES」が存在する。これはESSLと呼ばれることもある。
Webブラウザ向けのOpenGL ES派生規格としてWebGLが存在するが、WebGLでもGLSLが使用される。
クロノスが策定しているローレベルグラフィックスAPIであるVulkanは、シェーダープログラムの中間表現SPIR-Vを入力として受け付けるが、SPIR-Vを出力するオフラインシェーダーコンパイラglslangValidatorにおいて最初にサポートされた上位レベルシェーディング言語はGLSLである。のちにSPIR-VはOpenGL 4.6にも導入された。