Input-Assembler fase
De Direct3D 10 en hogere API scheidt functionele gebieden van de pijplijn in fasen; de eerste fase in de pijplijn is de IA-fase (input-assemblyer).
Het doel van de invoerassemblyerfase is het lezen van primitieve gegevens (punten, lijnen en/of driehoeken) uit door de gebruiker gevulde buffers en het samenstellen van de gegevens in primitieven die door de andere pijplijnfasen worden gebruikt. De IA-fase kan hoekpunten samenstellen in verschillende primitieve typen (zoals lijnlijsten, driehoekstrips of primitieven met aangrenzing). Er zijn nieuwe primitieve typen (zoals een lijnlijst met aangrenzing of een driehoekslijst met aangrenzing) toegevoegd ter ondersteuning van de geometrie-shader.
Aangrenzingsinformatie is alleen zichtbaar voor een toepassing in een geometrie-shader. Als een geometrie-shader werd aangeroepen met een driehoek inclusief aangrenzing, bevatten de invoergegevens bijvoorbeeld 3 hoekpunten voor elke driehoek en 3 hoekpunten voor aangrenzingsgegevens per driehoek.
Wanneer de input-assemblyerfase wordt aangevraagd om aangrenzingsgegevens uit te voeren, moeten de invoergegevens aangrenzingsgegevens bevatten. Dit kan vereisen dat u een dummy hoekpunt opgeeft (een ontaarde driehoek vormt) of mogelijk door een vlag toe te voegen aan een van de hoekpuntkenmerken, ongeacht of het hoekpunt al dan niet bestaat. Dit zou ook moeten worden gedetecteerd en verwerkt door een geometrie-shader, hoewel het ruimen van de degenerate geometrie plaatsvindt in de rasterizerfase.
Tijdens het samenstellen van primitieven is het een secundair doel van de IA om door het systeem gegenereerde waarden te koppelen om shaders efficiënter te maken. Door het systeem gegenereerde waarden zijn tekenreeksen die ook wel semantiek worden genoemd. Alle drie de arceringsfasen worden samengesteld uit een gemeenschappelijke shader-kern en de arceringskern maakt gebruik van door het systeem gegenereerde waarden (zoals een primitieve id, een exemplaar-id of een hoekpunt-id), zodat een shader-fase de verwerking kan verminderen tot alleen die primitieven, exemplaren of hoekpunten die nog niet zijn verwerkt.
Zoals wordt weergegeven in het pijplijnblokdiagram, wordt, zodra de IA-fase gegevens uit het geheugen leest (de gegevens samengevoegd in primitieven en door het systeem gegenereerde waarden koppelen), worden de gegevens uitgevoerd naar de hoekpunt-shaderfase.
In deze sectie
Onderwerp | Beschrijving |
---|---|
Aan de slag met de Input-Assembler Fase |
Er zijn enkele stappen nodig om de IA-fase (input-assemblyer) te initialiseren. U moet bijvoorbeeld bufferbronnen maken met de hoekpuntgegevens die de pijplijn nodig heeft, de IA-fase aangeven waar de buffers zijn en welk type gegevens ze bevatten en het type primitieven opgeven dat uit de gegevens moet worden samengesteld. |
Primitieve topologieën |
Direct3D 10 en hoger ondersteunt verschillende primitieve typen (of topologieën) die worden vertegenwoordigd door het D3D_PRIMITIVE_TOPOLOGY geïnventariseerd type. Deze typen definiëren hoe hoekpunten worden geïnterpreteerd en weergegeven door de pijplijn. |
De Input-Assembler-fase zonder buffers gebruiken |
Het maken en binden van buffers is niet nodig als uw shaders geen buffers nodig hebben. Deze sectie bevat een voorbeeld van eenvoudige hoekpunt- en pixel-shaders die één driehoek tekenen. |
System-Generated waarden |
Door het systeem gegenereerde waarden worden gegenereerd door de IA-fase (op basis van door de gebruiker geleverde invoer semantiek) om bepaalde efficiëntie in shader-bewerkingen mogelijk te maken. |