Input-Assembler Phase
Die Direct3D 10- und höher-API trennt Funktionsbereiche der Pipeline in Phasen; die erste Phase in der Pipeline ist die Eingabeassemblerphase (IA).
Der Zweck der Eingabeassemblerphase besteht darin, primitive Daten (Punkte, Linien und/oder Dreiecke) aus benutzerdefinierten Puffern zu lesen und die Daten in Grundtypen zusammenzustellen, die von den anderen Pipelinephasen verwendet werden. Die IA-Phase kann Scheitelpunkte in verschiedene Grundtypen (z. B. Linienlisten, Dreiecksstreifen oder Grundtypen mit Angrenzender) zusammenstellen. Neue Grundtypen (z. B. eine Linienliste mit Adjacency oder eine Dreiecksliste mit Adjacency) wurden hinzugefügt, um den Geometrie-Shader zu unterstützen.
Informationen zur Adjacency sind nur für eine Anwendung in einem Geometrie-Shader sichtbar. Wenn ein Geometrie-Shader mit einem Dreieck einschließlich Angrenzender aufgerufen wurde, z. B. enthalten die Eingabedaten 3 Scheitelpunkte für jedes Dreieck und 3 Scheitelpunkte für Adjacency-Daten pro Dreieck.
Wenn die Eingabeassemblerphase zum Ausgeben von Angrenzenden Daten angefordert wird, müssen die Eingabedaten Adjacency-Daten enthalten. Dies kann erfordern, dass ein Dummy-Scheitelpunkt (ein entgenerates Dreieck bilden) oder durch Kennzeichnen in einem der Vertexattribute, ob der Scheitelpunkt vorhanden ist oder nicht. Dies müsste auch von einem Geometrie-Shader erkannt und behandelt werden, obwohl die Culling der degenerierten Geometrie in der Rasterizerphase erfolgt.
Beim Zusammensetzen von Grundtypen besteht ein sekundärer Zweck der IA darin, vom System generierten Werte anzufügen, um Shader effizienter zu gestalten. Vom System generierte Werte sind Textzeichenfolgen, die auch als Semantik bezeichnet werden. Alle drei Shaderphasen werden aus einem allgemeinen Shaderkern erstellt, und der Shaderkern verwendet vom System generierte Werte (z. B. eine Grundtyp-ID, eine Instanz-ID oder eine Vertex-ID), sodass eine Shaderphase die Verarbeitung auf nur die Grundtypen, Instanzen oder Scheitelpunkte reduzieren kann, die noch nicht verarbeitet wurden.
Wie im Pipelineblockdiagrammdargestellt, werden die Daten, sobald die IA-Phase Daten aus dem Speicher liest (die Daten in Grundtypen zusammenfügt und vom System generierte Werte anfügen), die Daten werden an die Vertexshaderstufeausgegeben.
In diesem Abschnitt
Thema | Beschreibung |
---|---|
Erste Schritte mit der Input-Assembler Phase |
Es sind einige Schritte erforderlich, um die Eingabeassemblerphase (IA) zu initialisieren. Sie müssen beispielsweise Pufferressourcen mit den von der Pipeline benötigten Vertexdaten erstellen, der IA-Phase mitteilen, wo die Puffer sind und welche Art von Daten sie enthalten, und den Typ der Grundtypen angeben, die aus den Daten zusammengesetzt werden sollen. |
primitive Topologien |
Direct3D 10 und höher unterstützen mehrere Grundtypen (oder Topologien), die durch den D3D_PRIMITIVE_TOPOLOGY Aufzählungstyp dargestellt werden. Diese Typen definieren, wie Scheitelpunkte von der Pipeline interpretiert und gerendert werden. |
Verwenden der Input-Assembler Stufe ohne Puffer |
Das Erstellen und Binden von Puffern ist nicht erforderlich, wenn für Die Shader keine Puffer erforderlich sind. Dieser Abschnitt enthält ein Beispiel für einfache Vertex- und Pixelshader, die ein einzelnes Dreieck zeichnen. |
Verwenden von System-Generated Werten |
Vom System generierte Werte werden von der IA-Phase (basierend auf vom Benutzer bereitgestellten Eingaben Semantik) generiert, um bestimmte Effizienzen in Shadervorgängen zu ermöglichen. |