Les différents types de shaders sous OpenGL
Les shaders permettant aux développeurs d'intervenir plus finement lors du rendu de l'image (rendant ainsi programmable le pipeline OpenGL 2.0 contrairement à OpenGL 1.0), il existe différents types de shaders. Indiqués ici dans l'ordre d'exécution dans le pipeline:
- vertex shader
- tessellation shader depuis OpenGL 4.x ou à partir de OpenGL ES 3.1 (Via extension:EXT_tessellation_shader). Il s'agit de définir le nombre de triangles qui sera nécessaire pour un modèle 3D. Plus il y a de triangles dans une primitive, plus beau sera le rendu (meilleur rendu par rapport à l'éclairage ambient par exemple), moins il y en a, plus les ressources GPU seront disponibles. Ce shader sera surtout utilisé pour produire un nombre élevé de primitive (par exemple triangles) pour un objet proche et inversement pour les objets lointains. Cela évite de devoir définir plusieurs modèles identiques avec plus ou moins de détails suivant la distance de cet objet.
- geometry shader: permet d'intervenir sur le type de primitive utilisée. Par exemple passé du triangle au point ou ligne.
- fragment shader, encore appelé pixel shader, permet d'intervenir directement sur un pixel.
Deux shaders seront à définir impérativement pour permettre l'affichage de vos rendus 3D:vertex shader et fragment shader. Les autres seront facultatifs.
En réalité
fragment shader serait aussi facultatif. Du moins si vous ne voulez pas voir
le rendu d'affichage...