OpenGL Shading Language
L’OpenGL Shading Language (GLSL) est un langage de programmation de shaders de haut-niveau dont la syntaxe est fondée sur le langage C. Ces derniers permettent un contrôle avancé du pipeline de la carte graphique. Le GLSL a été développé par l’OpenGL Architecture Review Board afin de faciliter la programmation de shaders avec l'API OpenGL sans avoir a utiliser le langage d'assemblage ARB ou des langages spécifiques à chaque matériel.
OpenGL Shading Language | |
Date de première version | |
---|---|
Site web | www.opengl.org |
Historique
Avec le progrès des cartes graphiques, de nouvelles fonctionnalités ont été ajoutées pour permettre plus de flexibilité dans le pipeline de rendu au niveau du traitement des sommets (aussi appelé "vertex") et des fragments. Ces éléments sont devenus programmables à l'aide de shaders de fragments et de sommets.
À l'origine, cette fonctionnalité était obtenue en écrivant des shaders en langage d'assemblage ARB ; une tâche complexe et peu intuitive. L'OpenGL Architecture Review Board a créé l'OpenGL Shading Language pour fournir une méthode plus intuitive de programmation des processeurs graphiques tout en conservant les avantages d'un standard libre qui a fait l'histoire d'OpenGL.
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.
Plusieurs des avantages de GLSL :
- Une compatibilité multiplateforme sur plusieurs systèmes d'exploitation, incluant Linux, MacOS et Windows.
- La possibilité d'écrire des shaders pouvant être utilisés sur la carte graphique de n'importe quel fournisseur de matériel prenant en charge le GLSL.
- Chaque fournisseur de matériel inclut un compilateur GLSL dans son pilote, permettant ainsi à chaque fournisseur de créer un code optimisé pour l’architecture de sa carte graphique.
Versions
Les versions de GLSL ont évolué parallèlement à des versions spécifiques de l'API OpenGL. Ce n'est qu'avec les versions 3.3 et supérieures d'OpenGL que les numéros de version majeure et mineure de GLSL et d'OpenGL correspondent. Voici les versions de GLSL pour chaque version d'OpenGL :
Version de GLSL | Version d'OpenGL | Date | Code Préprocesseur |
---|---|---|---|
1.10.59[1] | 2.0 | 30 Avril 2004 | #version 110 |
1.20.8[2] | 2.1 | 07 Septembre 2006 | #version 120 |
1.30.10[3] | 3.0 | 22 Novembre 2009 | #version 130 |
1.40.08[4] | 3.1 | 22 Novembre 2009 | #version 140 |
1.50.11[5] | 3.2 | 04 Décembre 2009 | #version 150 |
3.30.6[6] | 3.3 | 11 Mars 2010 | #version 330 |
4.00.9[7] | 4.0 | 24 Juillet 2010 | #version 400 |
4.10.6[8] | 4.1 | 24 Juillet 2010 | #version 410 |
4.20.11[9] | 4.2 | 12 Decembre 2011 | #version 420 |
4.30.8[10] | 4.3 | 7 Février 2013 | #version 430 |
4.40.9[11] | 4.4 | 16 Juin 2014 | #version 440 |
4.50.7[12] | 4.5 | 09 Mai 2017 | #version 450 |
4.60.5[13] | 4.6 | 14 Juin 2018 | #version 460 |
OpenGL ES et WebGL utilise l'OpenGL ES Shading Language (GLSL ES).
Version de GLSL ES | Version d'OpenGL ES | Version de WebGL | Version de GLSL | Date | Code Préprocesseur |
---|---|---|---|---|---|
1.00.17[14] | 2.0 | 1.0 | 1.20 | 12 Mai 2009 | #version 100 |
3.00.6[15] | 3.0 | 2.0 | 3.30 | 29 Janvier 2016 | #version 300 es |
3.10.5[16] | 3.1 | GLSL ES 3.00 | 29 Janvier 2016 | #version 310 es | |
3.20.6[17] | 3.2 | GLSL ES 3.10 | 10 Juillet 2019 | #version 320 es |
Les deux langages sont liés mais ne sont pas entièrement compatibles. Ils peuvent être transcompilés l'un en l'autre à l'aide de SPIR-Cross.
Voir aussi
Articles connexes
Références
- Citations
- « GLSL Language Specification, Version 1.10.59 »
- « GLSL Language Specification, Version 1.20.8 »
- « GLSL Language Specification, Version 1.30.10 »
- « GLSL Language Specification, Version 1.40.08 »
- « GLSL Language Specification, Version 1.50.11 »
- « GLSL Language Specification, Version 3.30.6 »
- « GLSL Language Specification, Version 4.00.9 »
- « GLSL Language Specification, Version 4.10.6 »
- « GLSL Language Specification, Version 4.20.11 »
- « GLSL Language Specification, Version 4.30.8 »
- « GLSL Language Specification, Version 4.40.9 »
- « GLSL Language Specification, Version 4.50.7 »
- « GLSL Language Specification, Version 4.60.5 »
- « GLSL ES Language Specification, Version 1.00, revision 17 »
- « GLSL ES Language Specification, Version 3.00, revision 6 »
- « The OpenGL ES® Shading Language, version 3.10, revision 5 »
- « The OpenGL ES® Shading Language, Version 3.20.6 »
Liens externes
- (en) OpenGL.org, site officiel d'OpenGL
- (en) Documentation GLSL sur OpenGL.org
- Portail de l’imagerie numérique
- Portail de la programmation informatique