Pipeline de rendu
Le matériel graphique prenant en charge Direct3D version 10 peut être conçu avec des cœurs de nuanceur programmables partagés. L’unité de traitement graphique (GPU) peut programmer des cœurs de nuanceur qui peuvent être planifiés sur les blocs fonctionnels qui composent le pipeline de rendu. Cet équilibrage de charge signifie que les développeurs matériels ne sont pas tenus d’utiliser chaque type de nuanceur, mais uniquement ceux qui sont nécessaires pour effectuer le rendu. Cet équilibrage de charge peut ensuite libérer des ressources pour les types de nuanceurs actifs. La figure suivante montre les blocs fonctionnels du pipeline de rendu. Les sections qui suivent la figure décrivent les blocs plus en détail.
Assembleur d'entrée
L’étape d’assembleur d’entrée utilise des opérations de fonction fixe pour lire les sommets en mémoire. L’assembleur d’entrée forme ensuite des primitives geometry et crée des éléments de travail de pipeline. Les identificateurs de vertex générés automatiquement, les identificateurs instance (disponibles pour le nuanceur de vertex) et les identificateurs primitifs (disponibles pour le nuanceur de géométrie ou le nuanceur de pixels) permettent un traitement spécifique à l’identificateur. La ligne en pointillés de la figure montre le flux de traitement spécifique à l’identificateur.
Nuanceur de sommets
L’étape de nuanceur de vertex prend un sommet comme entrée et génère un sommet.
Nuanceur de géométrie
La phase de nuanceur de géométrie prend une primitive en tant qu’entrée et génère zéro, une ou plusieurs primitives. Les primitives de sortie peuvent contenir plus de données que possible sans le nuanceur geometry. La quantité totale de données de sortie par opération est (taille de vertex x nombre de sommets).
Flux de sortie
L’étape de sortie de flux concatène (flux sortant) les primitives qui atteignent la sortie du nuanceur de géométrie pour les mémoires tampons de sortie. La sortie du flux est associée au nuanceur de géométrie et les deux sont programmées ensemble.
Rasterizer
L’étape de rastériseur clipse les primitives (y compris les limites de clip personnalisées), effectue la division de perspective sur les primitives, implémente la sélection de fenêtres d’affichage et de ciseaux, effectue la sélection de la cible de rendu et effectue une configuration primitive.
Nuanceur de pixels
L’étape de nuanceur de pixels prend un pixel comme entrée et génère un pixel à la même position ou aucun pixel. Le nuanceur de pixels ne peut pas lire les cibles de rendu actuelles.
Fusion de sortie
L’étape de fusion de sortie effectue des opérations fixes de fusion, de profondeur et de gabarit de cible de rendu de fonction.