Langages

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.

  1. Le langage machine. Il dépend de la carte graphique (ATI ou NVIDIA) et est inaccessible par le programmeur.
  2. 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.
  3. 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.
  4. 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