Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Hodnoty generované systémem jsou generovány vstupní assembler (IA) fáze (IA) (na základě uživatelsky zadaných vstupních sémantika) umožňující určité efektivity v operacích shaderu. Připojením dat, jako je ID instance (viditelné pro fázi vrcholového shaderu (VS) ), ID vrcholu (viditelné pro VS) nebo ID primitiva (viditelné pro fázi shaderu geometrie (GS) /a fázi shaderu pixelu (PS)), může následující fáze shaderu hledat tyto systémové hodnoty pro optimalizaci zpracování v této fázi.
Fáze VS může například vyhledat ID instance, aby pro shader chytla další data jednotlivých vrcholů nebo aby prováděla jiné operace; fáze GS a PS mohou použít primitivní ID k získání primitivních dat stejným způsobem.
VertexID
Id vrcholu se používá v každé fázi shaderu k identifikaci každého vrcholu. Jedná se o 32bitové celé číslo bez znaménka, jehož výchozí hodnota je 0. Přiřazuje se vrcholu, když je primitiva zpracovávána ve fázi vstupního assembleru (IA) . Připojte sémantiku vertex-ID ke vstupní deklaraci shaderu, aby fáze IA generovala ID pro každý vrchol.
IA přidá ke každému vrcholu identifikátor vrcholu pro použití ve stadiích shaderu. Pro každou výkresovou operaci se ID vrcholu zvýší o 1. U indexovaných volání kreslení se počet obnoví zpět na počáteční hodnotu. Pokud ID vrcholu přeteče (překročí hodnotu 2³²– 1), vrátí se na 0.
U všech primitivních typů mají vrcholy přidružené ID vrcholu (bez ohledu na sousedství).
PrimitiveID
Každá fáze shaderu používá primitivní ID k identifikaci jednotlivých primitiv. Jedná se o 32bitové celé číslo bez znaménka, jehož výchozí hodnota je 0. Je přiřazen k primitivu, když je primitiv zpracován stupněm vstupního assembleru (IA) . Pokud chcete informovat fázi IA o vygenerování primitivního ID, připojte k deklaraci vstupu shaderu sémantiku primitive-ID.
Fáze IA přidá primitivní ID ke každému primitivu pro použití ve fázi Geometry Shader (GS) nebo ve fázi Vertex Shader (VS), podle toho, která fáze je první aktivní po fázi IA. Pro každé indexované volání kreslení se primitivní ID zvýší o 1, ale primitivní ID se resetuje na 0 při každém zahájení nové instance. Všechna ostatní volání kreslení nemění hodnotu ID instance. Pokud ID instance přeteče (překračuje 2³²– 1), resetuje se na 0.
Fáze pixelového shaderu (PS) nemá samostatný vstup pro ID primitiv; jakýkoliv vstup pixelového shaderu, který určuje ID primitiv, však používá konstantní interpolační režim.
Neexistuje žádná podpora automatického generování primitivního ID pro sousední primitivy. U primitivních typů se sousedstvím, jako je trojúhelníkový pruh se sousedstvím, se primitivní ID udržuje pouze pro vnitřní primitiva (nesousedící primitiva), stejně jako soubor primitiv v trojúhelníkovém pruhu bez sousedství.
Identifikátor instance
ID instance používá každá fáze shaderu k identifikaci instance geometrie, která se právě zpracovává. Jedná se o 32bitové celé číslo bez znaménka, jehož výchozí hodnota je 0.
Fáze vstupního assembleru (IA) přidá ID instance ke každému vrcholu, pokud vstupní deklarace vrcholového shaderu zahrnuje sémantiku ID instance. Pro každé jednotlivé indexované volání kresby se ID instance zvýší o 1. Všechna ostatní volání kreslení nemění hodnotu ID instance. Pokud ID instance přeteče (překročí 2³²– 1), vrátí se na 0.
příklad
Následující obrázek znázorňuje, jak jsou systémové hodnoty připojeny k instancovanému trojúhelníkovému pásu ve fázi Input Assembler (IA) .
Tyto tabulky zobrazují systémové hodnoty vygenerované pro obě instance stejného trojúhelníkového pruhu. První instance (instance U) se zobrazuje modře, druhá instance (instance V) je zobrazená zeleně. Plné čáry spojují vrcholy v základních tvarech, přerušované čáry spojují sousední vrcholy.
Následující tabulky zobrazují hodnoty generované systémem pro instanci U.
| Data vrcholů | C,U | D,U | E,U | F,U | G,U | H,U | Já a Ty | J,U | K,U | L,U |
|---|---|---|---|---|---|---|---|---|---|---|
| VertexID | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| Identifikátor instance | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Instance trojúhelníku U má 3 primitiva trojúhelníku s následujícími systémově vygenerovanými hodnotami:
| Hodnota 1 | Hodnota 2 | Hodnota 3 | |
|---|---|---|---|
| PrimitiveID | 0 | 1 | 2 |
| Identifikátor instance | 0 | 0 | 0 |
Následující tabulky zobrazují hodnoty generované systémem pro instanci V.
| Data vrcholů | C,V | D,V | E,V | F,V | G,V | H,V | I,V | J, V | K,V | L,V |
|---|---|---|---|---|---|---|---|---|---|---|
| VertexID | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| Identifikátor instance | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
Instance pruhu trojúhelníku V má 3 primitivní prvky trojúhelníku s následujícími systémově generovanými hodnotami:
| Hodnota 1 | Hodnota 2 | Hodnota 3 | |
|---|---|---|---|
| PrimitiveID | 0 | 1 | 2 |
| Identifikátor instance | 1 | 1 | 1 |
Fáze vstupního assembleru (IA) generuje ID (vrchol, primitivní a instance); všimněte si také, že každá instance má jedinečné ID instance. Data končí řezem pruhu, který odděluje každou instanci trojúhelníkového pruhu.
související témata