Partager via


Pipelines pour Direct3D version 11

Cette section s’applique uniquement à Windows 7 et versions ultérieures et Windows Server 2008 R2 et versions ultérieures du système d’exploitation Windows.

Le pipeline de rendu graphique pour Direct3D version 11 est développé à partir du pipeline de rendu graphique pour Direct3D version 10. En plus des cœurs de nuanceur programmables partagés pris en charge par Direct3D version 10, Direct3D version 11 prend également en charge les cœurs de nuanceur de coque, de domaine et de calcul.

Direct3D version 11 prend en charge deux pipelines distincts : le pipeline de dessin (pipeline de rendu graphique) et le pipeline de répartition (pipeline de nuanceur de calcul). Les pipelines de dessin et de distribution sont techniquement peu connectés, dans le sens où vous ne pouvez pas avoir la même sous-ressource liée à l’écriture dans les deux pipelines simultanément, ou à l’écriture dans un pipeline et à la lecture dans l’autre pipeline.

La figure suivante montre les blocs fonctionnels du pipeline de dessin pour Direct3D version 11.

Diagramme illustrant les blocs fonctionnels du pipeline de dessin Direct3D version 11.

La figure suivante montre les blocs fonctionnels du pipeline de distribution pour Direct3D version 11.

Diagramme illustrant les blocs fonctionnels du pipeline de distribution Direct3D version 11.

Les sections suivantes décrivent les blocs new-for-Direct3D 11 qui sont illustrés dans les figures précédentes.

Nuanceur de coque

Le nuanceur de coque fonctionne une fois par patch. Vous pouvez utiliser le nuanceur de coque avec des correctifs de l’assembleur d’entrée. Le nuanceur de coque peut transformer les points de contrôle d’entrée qui composent un correctif en points de contrôle de sortie. Le nuanceur de coque peut effectuer d’autres configurations pour l’étape tessellateur à fonction fixe. Par exemple, le nuanceur de coque peut générer des facteurs tess, qui sont des nombres qui indiquent la quantité à mettre en forme.

Le runtime Direct3D appelle les fonctions de pilote suivantes pour créer, configurer et détruire le nuanceur de coque :

Tessellator

Le tessellateur est une unité à fonction fixe dont le fonctionnement est défini par des déclarations dans le nuanceur de coque. Le tessellateur fonctionne une fois par patch qui est sortie par le nuanceur de coque. Le nuanceur de coque génère des facteurs tess, qui sont des nombres qui informent le tessellateur de la quantité à faire (générer la géométrie et la connectivité) sur le domaine du correctif.

Le runtime Direct3D appelle la fonction CalcPrivateTessellationShaderSize du pilote pour calculer la taille de la région de mémoire pour un nuanceur de coque ou de domaine.

Nuanceur de domaine

Le nuanceur de domaine est appelé une fois par sommet, qui est généré par le tessellateur. Chaque appel est identifié par sa coordonnée sur un domaine générique. Le rôle du nuanceur de domaine est de transformer cette coordonnée en quelque chose de tangible (par exemple, un point dans un espace 3D) pour utiliser le flux descendant du nuanceur de domaine. Chaque appel de nuanceur de domaine pour un correctif accède également à l’entrée partagée de toute la sortie du nuanceur de coque (par exemple, les points de contrôle de sortie).

Le runtime Direct3D appelle les fonctions de pilote suivantes pour créer, configurer et détruire le nuanceur de domaine :

Nuanceur de calcul

Le nuanceur de calcul permet d’afficher le GPU comme une grille générique de processeurs parallèles de données, sans aucun obstacle graphique du pipeline de dessin. Le nuanceur de calcul dispose d’un accès explicite à la mémoire partagée rapide pour faciliter la communication entre les groupes d’appels de nuanceur. Le nuanceur de calcul a également la possibilité d’effectuer des lectures et écritures éparses dans la mémoire. La disponibilité des opérations atomiques permet un accès unique aux adresses de mémoire partagées. Le nuanceur de calcul ne fait pas partie du pipeline de dessin. Le nuanceur de calcul existe seul. Toutefois, le nuanceur de calcul existe sur le même appareil que toutes les autres étapes du nuanceur. Le runtime Direct3D appelle les fonctions DispatchXxx du pilote plutôt que les fonctions DrawXxx du pilote pour appeler le nuanceur de calcul.

Le runtime Direct3D appelle les fonctions de pilote suivantes pour créer, configurer et détruire le nuanceur de calcul :

Vues de ressources d’accès non triées

Les vues de ressources d’accès non ordonnées sont des ressources en lecture/écriture que vous pouvez lier au nuanceur de calcul ou au nuanceur de pixels. La liaison des vues de ressources d’accès non triées est similaire à la façon dont vous pouvez lier des vues de ressources de nuanceur, qui sont des ressources en lecture seule, à n’importe quelle étape du nuanceur.

Le runtime Direct3D appelle les fonctions de pilote suivantes pour créer, configurer et détruire des vues de ressources d’accès non ordonnées :