Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
L’assembleur d’entrée (IA) introduit des triangles, des lignes ou des points dans le pipeline de rendu en extrayant les données géométriques sources à partir de mémoires tampons 1D.
Les données de sommets peuvent provenir de plusieurs mémoires tampons et être accessibles sous forme de tableau de structures à partir de chaque mémoire tampon. Les mémoires tampons sont chacune assignées à un emplacement d’entrée individuel et reçoivent une progression de structure. La disposition des données sur toutes les mémoires tampons est spécifiée par une déclaration d’entrée, dans laquelle chaque entrée définit un élément. L’élément contient un emplacement d’entrée, un décalage de structure, un type de données et un registre cible (pour le premier shader actif dans le pipeline).
Une séquence donnée de sommets est construite à partir de données extraites des mémoires tampons. Les données sont extraites dans un parcours dirigé par une combinaison d’état de fonction fixe et différents appels DDI Draw*(). Diverses topologies primitives (par exemple, la liste de points, la liste de lignes, la liste de triangles et la bande de triangles) sont disponibles pour rendre la séquence de données de vertex représentant une séquence de primitives.
Les données de vertex peuvent être produites de deux manières. La première façon de produire des données de vertex est le rendu non indexé , qui est la traversée séquentielle des mémoires tampons qui contiennent des données de vertex. Les données de vertex proviennent d’un décalage de début à chaque liaison de mémoire tampon. La deuxième façon de produire des données de vertex est le rendu indexé , qui est une traversée séquentielle d’une mémoire tampon unique qui contient des index entiers scalaires. Les index proviennent d’un décalage de début dans la mémoire tampon. Chaque index indique où extraire les données d’une mémoire tampon qui contient des données de vertex. Les valeurs d’index sont indépendantes des caractéristiques des mémoires tampons auxquelles elles font référence. Les mémoires tampons sont décrites par des déclarations. Le rendu non indexé et indexé, chacun de leur propre manière, produit des adresses à partir desquelles extraire des données de vertex en mémoire, puis assembler les résultats en sommets et primitives.
Le rendu géométrique instancié est activé en permettant une traversée séquentielle, dans un rendu non indexé ou indexé, pour parcourir une plage dans chaque mémoire tampon de vertex (cas non indexé) ou mémoire tampon d’index (cas indexé). Les liaisons de mémoire tampon peuvent être identifiées comme des données d’instance ou des données de vertex. Cette identification spécifie comment utiliser la mémoire tampon liée lors de l’exécution du rendu instancené. L’adresse générée par le rendu non indexé ou indexé est utilisée pour récupérer les données de sommets, et assure également la gestion de la boucle lorsque le runtime effectue un rendu instancié. Les données d’instance, en revanche, sont toujours parcourues de manière séquentielle à partir d’un décalage par mémoire tampon, à une fréquence d'une étape par instance (par exemple, une étape après que le nombre de sommets d’une instance est parcouru). Le taux d’étapes pour les données d’instance peut également être choisi comme étant un sous-harmonique de la fréquence d’instance (c’est-à-dire, une étape vers l’avant toutes les deux instances, chaque troisième instance, etc.).
Un autre cas particulier de l’IA est qu’elle peut lire les mémoires tampons auxquelles l’étape de sortie de flux a écrit. Un tel scénario permet un nouveau type d’opération de dessin, DrawAuto. DrawAuto permet une quantité dynamique de sortie écrite dans des mémoires tampons de sortie de flux à réutiliser, sans l’implication du processeur, pour déterminer la quantité de données réellement écrites.
En plus de produire des données de vertex à partir de mémoires tampons, l’IA peut générer automatiquement trois valeurs de compteur scalaires : VertexID, PrimitiveID et InstanceID, pour l’entrée aux étapes du nuanceur dans le pipeline de rendu.
Dans le rendu indexé des topologies de bandes, comme les bandes de triangles, un mécanisme est fourni pour dessiner plusieurs bandes avec un seul appel *Draw*() (autrement dit, la commande *cut pour couper des bandes).
Le runtime Direct3D appelle les fonctions de pilote suivantes pour créer, configurer et détruire l’IA :