Efekty (Direct3D 11)
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. Patří sem stav shaderu (vrchol, trupu, doména, geometrie, pixel a výpočetní shadery), textura a stav 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í.
Sadu technik lze seskupit do skupiny (která používá syntaxi "fxgroup"). Techniky je možné seskupit jakýmkoli způsobem. Například lze vytvořit více skupin, jeden na materiál; každý materiál by mohl mít techniku pro každou úroveň hardwaru; každá technika by měla sadu průchodů, které definují materiál na konkrétním hardwaru.
V této části
Námět | Popis |
---|---|
uspořádání stavu v efektu |
U Direct3D 11 je stav efektu pro určité fáze kanálu uspořádaný podle struktur. |
systémová rozhraní efektu |
Systém efektů definuje několik rozhraní pro správu stavu efektu. |
Specialing Interfaces |
ID3DX11EffectVariable má řadu metod přetypování rozhraní na konkrétní typ rozhraní, které potřebujete. |
rozhraní a třídy v efektů |
Třídy a rozhraní v efektech 11 lze použít mnoha způsoby. |
vykreslení efektu |
Efekt lze použít k ukládání informací nebo k vykreslení pomocí skupiny stavu. |
klonování efektu |
Klonování efektu vytvoří druhou, téměř identickou kopii efektu. |
syntaxe streamování |
Shader geometrie s proudem je deklarován s konkrétní syntaxí. |
rozdíly mezi efekty 10 a efekty 11 |
Toto téma ukazuje rozdíly mezi efekty 10 a efekty 11. |