Sdílet prostřednictvím


fáze Input-Assembler

Rozhraní API Direct3D 10 a vyšší odděluje funkční oblasti kanálu do fází; první fáze v kanálu je fáze input-assembleru (IA).

Účelem fáze vstupního assembleru je čtení primitivních dat (bodů, čar a trojúhelníků) z vyrovnávacích pamětí naplněných uživatelem a sestavení dat do primitiv, které budou použity v ostatních fázích kanálu. Fáze IA může sestavit vrcholy do několika různých primitivních typů (například seznamy čar, trojúhelníkové pruhy nebo primitivy s sousedstvím). Byly přidány nové primitivní typy (například seznam řádků se sousedstvím nebo trojúhelníkovým seznamem se sousedstvím), které podporují shader geometrie.

Informace o sousedství jsou viditelné pro aplikaci pouze ve shaderu geometrie. Pokud byl geometrický shader vyvolán trojúhelníkem včetně sousedství, vstupní data by například obsahovala 3 vrcholy pro každý trojúhelník a 3 vrcholy pro data sousedství na trojúhelník.

Když je fáze vstupního assembleru požadována pro výstup dat sousedství, vstupní data musí obsahovat data sousedství. To může vyžadovat poskytnutí fiktivního vrcholu (vytvoření degenerujícího trojúhelníku) nebo například označením příznaku v jednom z atributů vrcholu bez ohledu na to, zda vrchol existuje, nebo ne. To by také bylo potřeba zjistit a zpracovat pomocí shaderu geometrie, i když k odvrácení degenerované geometrie dojde ve fázi rasterizátoru.

Při sestavování primitiv je sekundárním účelem IA připojení systémově generovaných hodnot, aby byly shadery efektivnější. Systémové hodnoty jsou textové řetězce, které se také nazývají sémantika. Všechny tři fáze shaderu se vytvářejí ze společného jádra shaderu a jádro shaderu používá systémem generované hodnoty (například primitivní ID, ID instance nebo ID vrcholu), aby fáze shaderu snížila zpracování pouze na ty primitivy, instance nebo vrcholy, které ještě nebyly zpracovány.

Jak je znázorněno v diagramu bloku kanálu, jakmile fáze IA čte data z paměti (sestaví data do primitivních hodnot a připojí systémem generované hodnoty), data jsou výstupem do fáze vrchol shader.

V této části

Námět Popis
Začínáme s Input-Assembler fází
K inicializaci fáze input-assembleru (IA) je potřeba provést několik kroků. Potřebujete například vytvořit prostředky vyrovnávací paměti s daty vrcholů, která kanál potřebuje, informovat fázi IA, kde jsou vyrovnávací paměti a jaký typ dat obsahují, a určit typ primitiv, které se mají z dat sestavit.
primitivní topologie
Direct3D 10 a vyšší podporuje několik primitivních typů (nebo topologií), které jsou reprezentovány D3D_PRIMITIVE_TOPOLOGY výčtem typu. Tyto typy definují, jak se vrcholy interpretují a vykreslují kanálem.
použití fáze Input-Assembler bez vyrovnávacích pamětí
Vytváření a vytváření vyrovnávacích pamětí vazby není nutné, pokud vaše shadery nevyžadují vyrovnávací paměti. Tato část obsahuje příklad jednoduchých vrcholů a pixelových shaderů, které nakreslily jeden trojúhelník.
použití hodnot System-Generated
Systémové hodnoty se generují ve fázi IA (na základě uživatelského vstupu sémantiky), která umožňuje určité efektivity v operacích shaderu.

grafického kanálu

fáze kanálu (Direct3D 10)