Intro :
Le rendu graphique de DirectX 10 consiste en plusieurs étapes.
Prérequis :
Savoir utiliser et implémenter DirectX 10.
Explications :
Voici un schéma qui les résume :
Les rectangles carrés indiquent que l’étape de rendu ne peut pas être configurée par un script ou programme HLSL.
A l’inverse, les rectangles arrondies indiquent que l’étape de rendu peut être configurée par un script ou programme HLSL.
Voir cet article si vous ne savez ce qu’est le HLSL.
Étape Input Assembler :
Cette étape prépare les données géométriques à la chaîne de rendu 3D. Les données des Vertex Buffers et des Indexes Buffers sont agencées d’une certaine façon dans la mémoire de la carte graphique et à partir de ceux-ci, l’étape Input Assembler créée les primitives géométriques correspondantes (triangles, lignes, points, etc…) afin de les passer au Vertex Shader.
Étape Vertex Shader :
Cette étape permet de modifier les vertices en entrée. Elle consiste à transformer ces vertices depuis les coordonnées Object-space vers les coordonnées Clip-Space ; c’est-à-dire les coordonnées du modèle d’origine vers les coordonnes du cadre de vue de l’écran 2D.
Elle sert aussi à changer la position des vertex dans le repère 3D. Elle est responsable aussi d’effectuer les animations des modèles / personnages du jeu et permet aussi d’effectuer un rendu basique de lumière (en l’occurence du per-pixel ligthing).
Voir le Lexique si vous ne comprenez pas tous ces termes.
Elle traite un vertex à la fois : c’est-à-dire que cette étape est exécutée en boucle pour chaque vertex.
Les données en sortie de cette étape vers le Vertex shader (qui est en fait une fonction toute simple avec entrée et sortie) peuvent être : les coordonnées des textures, la couleur des vertex, etc…
Étape Geometry Shader :
Cette étape optionnelle permet de modifier complètement la géométrie des modèles / meshes.
Au lieu de recevoir vertex par vertex cette étape reçoit une primitive totalement assemblée (une ligne ou un triangle par exemple) ; de là on peut générer d’autres primitives à la volée. Le Geometry Shader peut ignorer une primitive ou en générer de nouvelles.
Étape Stream-Output Stage :
Génère le flux des primitives géométriques depuis la mémoire vers l’étape Rasterizer.
Étape Rasterizer :
Cette étape permet de rassembler les primitives afin de les envoyer au Pixel Shader. Elle s’occupe aussi de couper les primitives qui dépassent le cadre de vue de l’écran.
Étape Pixel Shader :
Cette étape s’occupe de modifier l’affichage de chaque pixel et pour chacun de ceux-ci elle renvoie une couleur en sortie.
Étape Output Merger :
Cette étape s’occupe quel pixel doit être affichée à l’écran. Les pixels générés sont calculés sur la base du Pixel Shader, du contenu des Render Targerts, du contenu du Depth Buffer et du contenu du Stencil Buffer.
Résumé :
Nous avons énuméré toutes les étapes du rendu 3D de DirectX 10.
Références :
– Pipeline Stages (Direct3D 10) – DirectX10 June 2010 SDK Documentation

