Étape de l’assembleur d’entrée

L’API Direct3D 10 et versions ultérieures sépare les zones fonctionnelles du pipeline en étapes ; la première étape du pipeline est la phase d’assembleur d’entrée (IA).

L’objectif de la phase d’assembleur d’entrée est de lire les données primitives (points, lignes et/ou triangles) à partir de mémoires tampons remplies par l’utilisateur et d’assembler les données en primitives qui seront utilisées par les autres étapes de pipeline. La phase IA peut assembler des sommets en plusieurs types primitifs différents (tels que des listes de lignes, des bandes de triangles ou des primitives avec adjacence). De nouveaux types primitifs (tels qu’une liste de lignes avec adjacence ou une liste de triangles avec adjacence) ont été ajoutés pour prendre en charge le nuanceur de géométrie.

Les informations d’adjacence sont visibles pour une application uniquement dans un nuanceur de géométrie. Si un nuanceur de géométrie était appelé avec un triangle incluant l’adjacence, pour instance, les données d’entrée contiennent 3 sommets pour chaque triangle et 3 sommets pour les données d’adjacence par triangle.

Lorsque la phase d’assembleur d’entrée est demandée pour générer des données d’adjacence, les données d’entrée doivent inclure des données d’adjacence. Cela peut nécessiter la fourniture d’un vertex factice (formant un triangle dégénéré), ou peut-être en indiquant dans l’un des attributs de vertex si le vertex existe ou non. Cela devrait également être détecté et géré par un nuanceur de géométrie, bien que l’élimination de la géométrie dégénérée se produise dans l’étape du rastériseur.

Lors de l’assemblage de primitives, un objectif secondaire de l’IA est d’attacher des valeurs générées par le système pour aider à rendre les nuanceurs plus efficaces. Les valeurs générées par le système sont des chaînes de texte qui sont également appelées sémantiques. Les trois phases de nuanceur sont construites à partir d’un cœur de nuanceur commun, et le cœur du nuanceur utilise des valeurs générées par le système (comme un ID primitif, un id instance ou un id de vertex) afin qu’une phase de nuanceur puisse réduire le traitement uniquement aux primitives, instances ou sommets qui n’ont pas encore été traités.

Comme indiqué dans le diagramme de blocs de pipeline, une fois que la phase IA lit les données à partir de la mémoire (assemble les données dans des primitives et attache des valeurs générées par le système), les données sont générées à l’étape du nuanceur de vertex.

Contenu de cette section

Rubrique Description
Prise en main avec la phase Input-Assembler
Il existe quelques étapes nécessaires pour initialiser la phase d’assembleur d’entrée (IA). Par exemple, vous devez créer des ressources de mémoire tampon avec les données de vertex dont le pipeline a besoin, indiquer à la phase IA où se trouvent les mémoires tampons et le type de données qu’elles contiennent, et spécifier le type de primitives à assembler à partir des données.
Topologies primitives
Direct3D 10 et versions ultérieures prend en charge plusieurs types primitifs (ou topologies) qui sont représentés par le D3D_PRIMITIVE_TOPOLOGY type énuméré. Ces types définissent la façon dont les sommets sont interprétés et rendus par le pipeline.
Utilisation de l’étape Input-Assembler sans mémoires tampons
La création et la liaison de tampons ne sont pas nécessaires si vos nuanceurs n’ont pas besoin de tampons. Cette section contient un exemple de nuanceurs de vertex et de pixels simples qui dessinent un triangle unique.
Utilisation de valeurs System-Generated
Les valeurs générées par le système sont générées par la phase IA (en fonction de la sémantique d’entrée fournie par l’utilisateur) pour permettre certaines efficacités dans les opérations de nuanceur.

Pipeline graphique

Étapes de pipeline (Direct3D 10)