
OpenGL Shading Language ( GLSL ) est un langage de shading de haut niveau dont la syntaxe est basée sur le langage de programmation C. Il a été créé par l' OpenGL ARB (OpenGL Architecture Review Board) pour donner aux développeurs un contrôle plus direct du pipeline graphique sans avoir à utiliser le langage assembleur ARB ou des langages spécifiques au matériel.
Arrière-plan
Avec les progrès des cartes graphiques, de nouvelles fonctionnalités ont été ajoutées pour permettre une plus grande flexibilité dans le pipeline de rendu au niveau des vertex et des fragments . La programmabilité à ce niveau est obtenue grâce à l'utilisation de shaders de fragment et de vertex .
À l'origine, cette fonctionnalité était obtenue en écrivant des shaders en langage assembleur ARB , une tâche complexe et peu intuitive. L' ARB OpenGL a créé le langage OpenGL Shading pour fournir une méthode plus intuitive de programmation de l' unité de traitement graphique tout en conservant l'avantage des normes ouvertes qui ont guidé OpenGL tout au long de son histoire.
Initialement introduit comme une extension d'OpenGL 1.4, GLSL a été officiellement inclus dans le noyau d'OpenGL 2.0 en 2004 par l'OpenGL ARB. Il s'agissait de la première révision majeure d'OpenGL depuis la création d' OpenGL 1.0 en 1992.
Voici quelques avantages de l’utilisation de GLSL :
- Compatibilité multiplateforme sur plusieurs systèmes d'exploitation, notamment Linux , macOS et Windows .
- La possibilité d'écrire des shaders qui peuvent être utilisés sur la carte graphique de n'importe quel fournisseur de matériel prenant en charge le langage OpenGL Shading.
- Chaque fournisseur de matériel inclut le compilateur GLSL dans son pilote, permettant ainsi à chaque fournisseur de créer du code optimisé pour l'architecture de sa carte graphique particulière.
Versions
Les versions GLSL ont évolué parallèlement aux versions spécifiques de l'API OpenGL. Ce n'est qu'avec les versions OpenGL 3.3 et supérieures que les numéros de version majeurs et mineurs de GLSL et d'OpenGL correspondent. Ces versions pour GLSL et OpenGL sont liées dans le tableau suivant :
| Version GLSL | Version OpenGL | Date | Préprocesseur de shader | ||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1.10.59 | 2.0 | 30 avril 2004 | #version 110 | ||||||||||||||||||||||||||||||
| 1.20.8 | 2.1 | 07 septembre 2006 | #version 120 | ||||||||||||||||||||||||||||||
| 1.30.10 | 3.0 | 22 novembre 2009 | #version 130 | ||||||||||||||||||||||||||||||
| 1.40.08 | 3.1 | 22 novembre 2009 | #version 140 | ||||||||||||||||||||||||||||||
| 1.50.11 | 3.2 | 04 décembre 2009 | #version 150 | ||||||||||||||||||||||||||||||
| 3.30.6 | 3.3 | 11 mars 2010 | #version 330 | ||||||||||||||||||||||||||||||
| 4.00.9 | 4.0 | 24 juillet 2010 | #version 400 | ||||||||||||||||||||||||||||||
| 4.10.6 | 4.1 | 24 juillet 2010 | #version 410 | ||||||||||||||||||||||||||||||
| 4.20.11 | 4.2 | 12 décembre 2011 | #version 420 | ||||||||||||||||||||||||||||||
| 4.30.8 | 4.3 | 7 février 2013 | #version 430 | ||||||||||||||||||||||||||||||
| 4.40.9 | 4.4 | 16 juin 2014 | #version 440 | ||||||||||||||||||||||||||||||
| 4.50.7 | 4.5 | 09 mai 2017 | #version 450 | ||||||||||||||||||||||||||||||
| 4.60.5 | 4.6 | 14 juin 2018 | #version 460 OpenGL ES et WebGL utilisent OpenGL ES Shading Language (abrégé : GLSL ES ou ESSL ).
|