Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
Systemgenererade värden genereras av IA-fasen (Input Assembler) (baserat på användarindata semantik) för att tillåta vissa effektivitetsvinster i skuggningsåtgärder. Genom att koppla data, till exempel ett instans-ID (synligt för Vertex Shader-stadiet (VS)), ett hörn-ID (synligt för VS) eller ett primitivt ID (synligt för GS-fas (Geometry Shader)/Pixel Shader-fas (PS)), kan en efterföljande skuggningsfas leta efter dessa systemvärden för att optimera bearbetningen i det stadiet.
VS-steget kan till exempel leta efter instans-ID:et för att hämta ytterligare per-vertex data för skuggningsprogrammet eller för att utföra andra åtgärder. GS- och PS-stegen kan använda primitiv-ID:et för att hämta per-primitiva data på samma sätt.
VertexID
Ett hörn-ID används av varje skuggningssteg för att identifiera varje hörn. Det är ett 32-bitars osignerat heltal vars standardvärde är 0. Det tilldelas en hörnposition när den primitiven bearbetas av Input Assembler (IA)-fasen . Fäst vertex-ID-semantiken till shader-ingångsdeklarationen för att informera IA-steget om att generera ett ID per vertex.
IA lägger till ett toppunkts-ID till varje toppunkt för användning av shader-stadier. För varje ritanrop ökas hörn-ID:t med 1. I indexerade anrop återställs antalet till startvärdet. Om hörn-ID:t svämmar över (överstiger 2³²– 1) omsluts det till 0.
För alla primitiva typer har hörnen ett hörn-ID associerat med dem (oavsett angränsande).
PrimitiveID
Ett primitivt ID används av varje skuggningssteg för att identifiera varje primitiv. Det är ett 32-bitars osignerat heltal vars standardvärde är 0. Den tilldelas till en primitiv när primitiven bearbetas av IA-stadiet (Input Assembler). Om du vill informera IA-stadiet om att generera ett primitivt ID kopplar du primitive-ID-semantiken till skuggningsindatadeklarationen.
IA-stadiet lägger till ett primitivt ID till varje primitiv för användning av GS-stadiet (Geometry Shader) eller Vertex Shader-stadiet (VS) (beroende på vilket som är det första steget aktivt efter IA-stadiet). För varje indexerat anrop ökas det primitiva ID:t med 1, men det primitiva ID:t återställs till 0 när en ny instans börjar. Alla andra anrop ändrar inte värdet för instans-ID:t. Om instans-ID:t flödar över (överstiger 2³²– 1) omsluts det till 0.
Pixel Shader-fasen (PS) har inte någon separat indata för ett primitivt ID; dock används ett konstant interpoleringsläge för alla indata för pixelskuggning som anger ett primitivt ID.
Det finns inget stöd för att automatiskt generera ett primitivt ID för angränsande primitiver. För primitiva typer med angränsning, till exempel en triangelremsa med angränsning, underhålls ett primitivt ID endast för de inre primitiverna (de icke-angränsande primitiverna), precis som uppsättningen primitiver i en triangelremsa utan angränsning.
Instans-ID
Ett instans-ID används av varje skuggningssteg för att identifiera den instans av geometrin som bearbetas för närvarande. Det är ett 32-bitars osignerat heltal vars standardvärde är 0.
Inmatningsmonteraren (IA)-steget lägger till ett instans-ID till varje vertex om vertikalskuggans indatadeklaration inkluderar instans-ID-semantiken. För varje indexerat anrop ökas instans-ID med 1. Alla andra anrop ändrar inte instans-ID:s värde. Om instans-ID:t flödar över (överstiger 2³²– 1) omsluts det till 0.
exempel
Följande bild visar hur systemvärden kopplas till en instanstriangelremsa i IA-fasen (Input Assembler).
De här tabellerna visar systemvärdena som genereras för båda instanserna av samma triangelremsa. Den första instansen (instans U) visas i blått, den andra instansen (instans V) visas i grönt. De fasta linjerna förbinder hörnen i primitiverna, de streckade linjerna ansluter de intilliggande hörnen.
Följande tabeller visar systemgenererade värden för instansen U.
| Vertexdata | C,U | D,U | E,U | F,U | G,U | H,U | Jag, du | J,U | K,U | L,U |
|---|---|---|---|---|---|---|---|---|---|---|
| VertexID | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| InstanceID | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Triangelremsainstansen U har tre triangelprimitiver med följande systemgenererade värden:
| Värde 1 | Värde 2 | Värde 3 | |
|---|---|---|---|
| PrimitiveID | 0 | 1 | 2 |
| InstanceID | 0 | 0 | 0 |
Följande tabeller visar systemgenererade värden för instansen V.
| Vertexdata | 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 |
| InstanceID | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
Triangelremsainstans V har tre triangelprimitiver med följande systemgenererade värden:
| Värde 1 | Värde 2 | Värde 3 | |
|---|---|---|---|
| PrimitiveID | 0 | 1 | 2 |
| InstanceID | 1 | 1 | 1 |
Fasen Input Assembler (IA) genererar ID:n (vertex, primitiv och instans); notera även att varje instans får ett unikt instans-ID. Data avslutas med ett remssnitt, som skiljer varje exemplar av triangelremsan.
Relevanta ämnen