Effekter (Direct3D 11)
En DirectX-effekt är en samling pipelinetillstånd som anges av uttryck skrivna i HLSL- och en syntax som är specifik för effektramverket.
När du har sammanställt en effekt använder du API:erna för effektramverket för att rendera. Effektfunktioner kan variera från något så enkelt som en hörnskuggning som transformerar geometri och en pixelskuggning som matar ut en solid färg, till en återgivningsteknik som kräver flera pass, använder varje steg i grafikpipelinen och manipulerar skuggningstillståndet samt pipelinetillståndet som inte är associerat med programmerbara skuggningar.
Det första steget är att organisera det tillstånd som du vill styra i en effekt. Detta omfattar skuggningstillstånd (hörn, skrov, domän, geometri, pixel- och beräkningsskuggor), struktur- och exempeltillstånd som används av skuggarna och andra icke-programmerbara pipelinetillstånd. Du kan skapa en effekt i minnet som en textsträng, men vanligtvis blir storleken tillräckligt stor för att det ska vara praktiskt att lagra effekttillståndet i en effektfil (en textfil som slutar i ett .fx-tillägg). Om du vill använda en effekt måste du kompilera den (för att kontrollera HLSL-syntaxen samt effektramverkssyntaxen), initiera effekttillstånd via API-anrop och ändra återgivningsloopen för att anropa renderings-API:erna.
En effekt kapslar in allt återgivningstillstånd som krävs av en viss effekt i en enda återgivningsfunktion som kallas teknik. Ett pass är en underuppsättning av en teknik som innehåller återgivningstillstånd. Implementera en eller flera passeringseffekter i en teknik för att implementera en eller flera passeringseffekter. Anta till exempel att du vill återge geometri med en uppsättning djup/stencilbuffertar och sedan rita några sprites ovanpå det. Du kan implementera geometriåtergivningen i första passet och sprite-ritningen i det andra passet. För att återge effekten renderar du bara båda passen i återgivningsloopen. Du kan implementera valfritt antal tekniker i en effekt. Naturligtvis, ju större antalet tekniker, desto större kompileringstid för effekten. Ett sätt att utnyttja den här funktionen är att skapa effekter med tekniker som är utformade för att köras på olika maskinvara. På så sätt kan ett program nedgradera prestandan korrekt baserat på de maskinvarufunktioner som identifierats.
En uppsättning tekniker kan grupperas i en grupp (som använder syntaxen "fxgroup"). Tekniker kan grupperas på vilket sätt som helst. Till exempel kan flera grupper skapas, en per material; varje material kan ha en teknik för varje maskinvarunivå; varje teknik skulle ha en uppsättning passerkort som definierar materialet på den specifika maskinvaran.
I det här avsnittet
Ämne | Beskrivning |
---|---|
Organisera tillstånd i en effekt |
Med Direct3D 11 ordnas effekttillståndet för vissa pipelinesteg efter strukturer. |
Effect System Interfaces |
Effektsystemet definierar flera gränssnitt för att hantera effekttillstånd. |
Specializing Interfaces |
ID3DX11EffectVariable har ett antal metoder för att omvandla gränssnittet till den specifika typ av gränssnitt som du behöver. |
gränssnitt och klasser i effekter |
Det finns många sätt att använda klasser och gränssnitt i Effekter 11. |
Återge en effekt |
En effekt kan användas för att lagra information eller för att återge med hjälp av en grupp tillstånd. |
Klona en effekt |
Kloning av en effekt skapar en andra, nästan identisk kopia av effekten. |
Stream Out-syntax |
En geometrisk skuggning med utströms deklareras med en viss syntax. |
skillnader mellan effekter 10 och effekter 11 |
Det här avsnittet visar skillnaderna mellan Effekter 10 och Effekter 11. |