Les deux bibliothèques graphiques temps réel exploitant les shaders
sont OpenGL et Microsoft DirectX. On peut distinguer actuellement
quatre niveaux dans la définition d'un shader.
- Le langage machine. Il dépend de la carte graphique (ATI ou
NVIDIA) et est inaccessible par le programmeur.
- Le langage assembleur. Il dépend de la bibliothèque graphique
que l'on utilise (DirectX ou OpenGL). Ce niveau est dénommé profil
dans la terminologie spécifique de la programmation sur GPU. Avec
DirectX, les profils sont dénommés PSx et VSx pour
les pixel et vertex shaders (x représentant la
version de shader). Ils ont leur équivalent avec OpenGL, sous
la dénomination ARB_vertex_program_x et ARB_fragment_program_x.
En pratique, c'est un programme exprimé sous cette forme qu'on manipule.
Le pilote (OpenGL ou DirectX), développé par le constructeur de la
carte que l'on utilise, se charge de le compiler et de l'envoyer à
la carte graphique. NVIDIA propose également des profils spécifiques
à leur carte, sous OpenGL, très optimisés et permettant de tirer parti
de leurs spécificités. Ils sont dénommés NVxy.
- Le langage de haut niveau. Sous DirectX, le langage de programmation
(proche du C) est HLSL (''High-Level Shading Language''),
pour OpenGL c'est GLSL (''openGL Shading Language''). Il
existe également CG (''C for Graphics''), développé par
Nvdia, qui fonctionne avec les deux bibliothèques. Ces différents
langages sont très proches les un des autres.
- L'''atelier de production'' de shaders. C'est un logiciel
permettant de générer interactivement des shaders dans différents
profils ou langages de haut niveau. L'utilisateur visualise en temps
réel le résultat de ses manipulations, ce qui lui permet d'obtenir
très finement les effets visuels souhaités. Le logiciel dédié de ATI
est RenderMonkey et FX Composer pour NVIDIA.
Porquet Damien
2005-03-02