Effekter (Direct3D 10)

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, geometri och pixelskuggare), textur och sampler-tillstå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.

programmeringsguide för Direct3D 10