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 à utiliser le ARB assembly language (en) ou des langages spécifiques à chaque matériel. HistoriqueAvec l'évolution des cartes graphiques, de nouvelles fonctionnalités ont été ajoutées pour permettre une plus grande flexibilité dans le pipeline de rendu au niveau du traitement des sommets (aussi appelé « vertex », de l'anglais) et des fragments (pixelss). Ces éléments sont devenus programmables à l'aide de shaders de fragments et de sommets. À l'origine, cette fonctionnalité s'obtenait en écrivant des shaders en ARB assembly language (en), 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 sa version 1.0 en 1992. Plusieurs des avantages de GLSL :
VersionsLes 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 ulté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 :
OpenGL ES et WebGL utilisent l'OpenGL ES Shading Language (GLSL 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. LangageOpérateursLe langage GLSL bénéficie des mêmes opérateurs que le C à l'exception des pointeurs. Les opérateurs bit à bit ont été ajouté dans la version 1.30. Fonctions et structures de contrôleA l'image du C, le langage GLSL supporte les boucles et les branchements (ex: if-else, for, switch). La récursion est proscrite et son absence est vérifiée durant la compilation. L'utilisateur peut définir ses propres fonctions mais le langage intègre aussi des fonctions natives. Les fabricants de carte graphique sont susceptibles de les optimiser au niveau matériel. Plusieurs de ces fonctions sont semblables à la bibliothèque mathématique du C tandis que d'autres sont spécifiques à la programmation graphique. La plupart des fonctions natives et des opérateurs peuvent opérer sur des scalaires et des vecteurs (jusqu'à 4 éléments) pour une ou plusieurs opérandes. C'est notamment le cas pour ces fonctions communément utilisées : PréprocesseurLe GLSL définit un sous-ensemble du préprocesseur C (CPP) combiné avec ses propres directives spécifiant sa version et les extensions d'OpenGL supportées. Tout ce qui relate aux noms de fichier comme L'extension Compilation et exécutionLes shaders GLSL ne sont pas des programmes autonomes. Il est nécessaire d'avoir un programme qui exploite l'API d'OpenGL pour les exécuter. Cette API est disponible sur différentes plateformes (ex: Linux, macOS, Windows) et dans un nombre très varié de langages comme le C, C++, C#, JavaScript, Delphi, Java. Les shaders en eux-mêmes ne sont que de simples chaînes de caractères transmises pour compilation par le programme utilisant l'API d'OpenGL au pilote du fabricant matériel. Les shaders peuvent être créés à la volée au sein de l'application, ou lus en tant que fichier texte, mais doivent être envoyés au pilote en tant que chaine de caractères. L'ensemble des API utilisées pour compiler, lier et transmettre les paramètres aux programmes GLSL sont spécifiés dans trois extensions d'OpenGL et sont devenus une partie intégrante d'OpenGL à partir de la version 2.0. L'API a été étendu aux shaders de géométrie à partir d'OpenGL 3.2, aux shaders de tessellation à partir d'OpenGL 4.0 et aux shaders de calcul à partir d'OpenGL 4.3. Ces APIs d'OpenGL se trouvent dans ces extensions :
Le langage GLSL peut aussi être utilisé avec l'API Vulkan. Il constitue un moyen courant d'utiliser les shaders sous cette API. Les shaders GLSL sont précompilés avant utilisation, ou au moment de l'exécution dans un format de bytecode binaire appelé SPIR-V. Références
Voir aussiArticles connexes
Autres langages de shaders
Liens externes
|
Portal di Ensiklopedia Dunia