Vertex shader Pixel shaderRasterizer
Textures
Fragments
Coordonn´
ee (z)
Coordonn´
ees de texture
Couleur
SommetsSommets
Coordonn´
ees (x, y, z)
Coordonn´
ees de texture
Couleur
Coordonn´
ees (x, y, z, w)
Vecteur normal
Coordonn´
ees de texture
Couleur
Fragments
Coordonn´
ee (z)
Couleur
ROP
Pixels
Couleur
M´
emoire GPU Tampon d’imageTampon de sommets
FIG. 4 – Pipeline graphique simplifié
moire centrale vers la mémoire graphique préalablement au rendu. À chaque sommet
est associé plusieurs attributs, tels que ses coordonnés dans l’espace tri-dimensionnel
de la scène, sa couleur, ses caractéristiques ou ses coordonnées de texture. Chacun de
ces attributs est généralement représenté sous la forme d’un vecteur à quatre compo-
santes contenant des nombres en virgule flottante simple précision (32 bits).
La première étape du pipeline graphique consiste à traiter chaque sommet pour opé-
rer des transformations sur ses attributs. Notamment, le sommet doit être projeté depuis
l’espace tri-dimensionnel de la scène à représenter vers la surface bi-dimensionnelle de
l’écran. Des calculs d’éclairements simples peuvent égalements être effectués pour mo-
difier l’attribut couleur du sommet. Toutes ces transformations sont réalisées par une
unité programmable, le vertex shader2.
Une fois le traitement géométrique sur les sommets effectués, le GPU discrétise
les primitives en sélectionnant les pixels qui se trouvent à l’intérieur. Cela consiste en
l’étape de rasterization. À ces pixels, aussi appelés fragments, sont associés les mêmes
attributs qu’aux sommets transformés (couleur, coordonnées de texture). Ces attributs
sont interpolés bilinéairement à partir des attributs des sommets de la primitive.
Les fragments arrivent alors dans la seconde unité programmable, le pixel shader
ou fragment shader. Cette unité permet d’effectuer des calculs sur chaque fragment,
tels que de l’application de texture.
Enfin, les unités ROP (raster operations) sont principalement chargées d’arbitrer
les situations où plusieurs fragments se trouvent aux mêmes coordonnées et doivent
former un unique pixel. Le test d’occlusion, ou Z-Culling, consiste à ne conserver que
le fragment le plus proche de l’observateur. Cela est réalisé en comparant sa coordon-
née Z avec la coordonnée minimale rencontrée jusque là, stockée dans le Z-buffer. Le
blending consiste à fusionner la couleur du fragment à écrire avec la couleur du pixel
dans le tampon d’image, selon une équation prédéfinie.
La génération suivante, arrivée fin 2006 et 2007 et correspondant à la version 10
de DirectX, marque une rupture avec ce modèle en unifiant les vertex et pixel shaders
et en ajoutant un nouveau type de shader, le geometry shader. Celui-ci se place entre
le vertex shader et le pixel shader. Ce programme permet d’ajouter ou supprimer des
sommets : prenant en entrée une primitive (triangle, ligne. . .), il fournit en sortie une
autre primitive constitué d’un ensemble de sommets.
2Vertex shader désigne traditionnellement le programme qui sera exécuté sur les sommets. Par abus de
langage, on utilise également ce terme pour les unités matérielles qui exécuteront ce programme.
5