Sdílet prostřednictvím


Efekty (Direct3D 10)

Efekt DirectX je kolekce stavu kanálu nastavená výrazy napsanými v HLSL a určitou syntaxí, která je specifická pro architekturu efektu. Po kompilaci efektu použijte rozhraní API architektury efektu k vykreslení. Funkce efektu může být v rozsahu od něčeho jednoduchého jako vrchol shader, který transformuje geometrii a pixel shader, který vypíše plnou barvu, až po techniku vykreslování, která vyžaduje více průchodů, používá každou fázi grafického kanálu a manipuluje se stavem shaderu a stavem kanálu, který není přidružený k programovatelným shaderům.

Prvním krokem je uspořádání stavu, který chcete ovládat v efektu. To zahrnuje stav shaderu (vrchol, geometrii a shadery pixelů), stav textury a vzorkovače používané shadery a další neprogramovatelný stav kanálu. Efekt v paměti můžete vytvořit jako textový řetězec, ale obvykle je velikost dostatečně velká, že je užitečné uložit stav efektu do souboru efektu (textový soubor, který končí příponou .fx). Pokud chcete použít efekt, musíte ho zkompilovat (pro kontrolu syntaxe HLSL i syntaxe architektury efektu), inicializovat stav efektu prostřednictvím volání rozhraní API a upravit smyčku vykreslování tak, aby volala vykreslovací rozhraní API.

Efekt zapouzdřuje veškerý stav vykreslení vyžadovaný konkrétním efektem do jedné vykreslovací funkce označované jako technika. Průchod je podmnožina techniky, která obsahuje stav vykreslení. Pokud chcete implementovat vícenásobný efekt vykreslování průchodů, implementujte jeden nebo více průchodů v rámci techniky. Řekněme například, že jste chtěli vykreslit nějakou geometrii s jednou sadou hloubkových/vzorníků vyrovnávací paměti a potom nakreslit některé sprity. V prvním průchodu můžete implementovat vykreslování geometrie a výkres spritu ve druhém průchodu. Pokud chcete efekt vykreslit, jednoduše vykreslíte oba průchody ve smyčce vykreslení. V efektu můžete implementovat libovolný počet technik. Samozřejmě, větší počet technik, tím větší čas kompilace efektu. Jedním ze způsobů, jak tuto funkci využít, je vytvořit efekty pomocí technik, které jsou navržené tak, aby běžely na jiném hardwaru. To umožňuje aplikaci elegantně downgradovat výkon na základě zjištěných hardwarových schopností.

Průvodce programováním pro Direct3D 10