Les shaders sous OpenGL pour Linux

 

 

Dans OpenGL, les données qui vont premettre de produire une image 3D sont classiquements injectées dans un pipeline. Voici un schéma simplifié de ce pipeline:

Image non trouvée !

Durant l'évolution de ces données dans ce pipeline jusqu'au rendu final, celles-ci pourront subir des tranformations, voire de nouvelles données pourront être ajoutées.

Ces phases de transformations de données vont déclencher des micros-programmes: les shaders.

 

Les shaders sont disponibles depuis OpenGL 1.4 sous formes d'extension ARB. Mais c'est à partir d'Open GL 2.0 qu'ils seront pleinement intégrés à OpenGL avec le GLSL (vu plus loin).

Ils permettent d'intervenir plus finement sur le rendu d'une image 3D à des phases bien précises. A tel point que cette intervention permettra par exemple d'exécuter un shader directement lors du traitement d'un pixel !

Un shader s'exécute au niveau de la carte graphique. Le CPU est donc soulagé de cette tâche car c'est le GPU qui va exécuter ce programme.

Le langage de programmation est le GLSL (pour OpenGL Shading Language). Il s'agit d'un langage ressemblant à du C créé par l'OpenGL ARB (OpenGL Architecture Review Board) afin de permettre aux développeurs d'avoir un contrôle directe du pipeline graphique le tout sans avoir à utiliser l'ARB assembly language (sorte de langage assembleur).

Il faudra passer par les phases de compilation/linkage comme pour la plupart des langages de programmation. Mais il y aura tout de même une différence avec les autres ! Là où vous livrez habituellement un code exécutable, ici il faudra fournir le source qui sera compilé et linké à la volé !

Cependant, ne cherchez pas de compilateur ou de linker à installer avec vos outils de développement, ceux-ci sont fournis directement avec OpenGL (plus exactement les constructeurs de cartes graphiques au niveau des pilotes pour OpenGL) !

Un shader s'exécutant sur le GPU, encore faut-il que celui-ci puisse le faire. Il faudra donc tester la compatibilité de la carte graphique avec les shaders.

Enfin, une notion importante à comprendre: Les shaders ne s'exécutent pas en même temps que vos traitements OpenGL ! Ceux sont deux environnements différents.

 

- Le langage GLSL

- Les différents types de shader

- Tester la présence de la gestion des shaders sur la carte graphique

- Compiler/linker le source

- Exécuter un shader

 

Annexes

 

OpenGL sur différentes plateformes

De la documentation sur les shaders (en Anglais):https://www.opengl.org/documentation/glsl/ dont OpenGL Shading Language Specification.