II. Étapes de Pipeline (Direct3D 10)▲
Le pipeline programmable Direct3D 10 est conçu pour générer des graphiques pour les applications de jeu en temps réel. Le diagramme conceptuel ci-dessous illustre le flux de données de l'input à l'output à travers chacun des étapes programmables.
Toutes les étapes peuvent se configurer avec l'interface de programmation applicative (API). Les étapes comportant des common shader cores (les blocs rectangulaires arrondis) peuvent se programmer en langage de programmation HLSL. Comme vous pouvez le voir, cela rend le pipeline extrêmement souple et adaptable. Le but de chaque étape est indiqué ci-dessous :
- Etape Input-Assembler - L'étape input-assembler est responsable de l'alimentation en données (triangles, lignes et points) du pipeline.
- Etape Vertex-Shader - L'étape vertex-shader traite les sommets des polygones, en effectuant typiquement des opérations telles que des transformations, des habillages et des éclairages. Un vertex shader prend toujours en entrée des points de données (vertex) du pipeline et produit en sortie des points de données (vertex).
- Etape Geometry-Shader - L'étape geometry-shader traite des primitives entières. Son entrée est une primitive entière (c'est à dire trois sommets pour un triangle, deux pour une ligne, ou un seul point un point). De plus, chaque primitive peut aussi inclure les données de sommets pour toute primitive d'élément adjacent. Cela peut inclure au maximum trois sommets supplémentaires pour un triangle ou deux supplémentaires pour une ligne. Le Geometry Shader admet aussi les amplifications et désamplifications limitées de géométrie. Partant d'une primitive donnée en entrée, le Geometry Shader peut écarter la primitive ou en émettre une ou plusieurs nouvelles.
- Etape Stream-Output - L'étape stream-output est conçue pour le flux de données primitives depuis le pipeline vers la mémoire sur le chemin vers le rasterizer. On peut extraire les données et/ou les passer dans le rasterizer. Les données extraites vers la mémoire peuvent être recirculées dans le pipeline comme données d'entrée ou relues depuis le CPU
- Etape Rasterizer - Le traceur par ligne (rasterizer) est responsable du découpage des primitives, de leur préparation pour le pixel shader et de la détermination de comment déclencher les pixel shaders.
- Etape Pixel-Shader - L'étape pixel-shader reçoit les données interpolées pour une primitive et génère des données par pixel comme la couleur.
- Etape Output-Merger - L'étape output-merger est responsable de la combinaison des différents types de données en sortie (valeurs de pixel shader, informations profondeur et stencil) avec le contenu des tampons de rendu cible et des tampons profondeur/stencil pour générer le résultat final du pipeline.