Hlavní stránka Hardware Grafické karty Rozhraní DirectX 11 a jeho nejbližší budoucnost
Rozhraní DirectX 11 a jeho nejbližší budoucnost
autor: Z. Obermaier , publikováno 8.3.2010
Rozhraní DirectX 11 a jeho nejbližší budoucnost

Grafické karty jsou dnes zřejmě nejviditelnějším kusem hardware, kdy se nové generace s vyšším výkonem a technologiemi objevují v téměř pravidelných časových odstupech. Nejskloňovanějším slovem tohoto roku a zřejmě i několika příštích let bude bezesporu DirectX 11 jako nejvíce prosazované API.


Displacement mapping

Toto spojení jsem už mnohokráte použil, nyní je tedy čas si také v krátkosti říci o co se jedná. Tato metoda také není nová a používá se již řadu let. Nejlepších výsledků ale dosáhneme právě spojením Teselace a Displacement mappingu (výšková textura), proto jsou tyto dvě věci spojovány a hovoří se o nich skoro jako o jedné funkci. Zlatá éra této techniky nastane zřejmě až s DX11.

Rozhraní DirectX 11 a jeho nejbližší budoucnost

Tato metoda je mocným nástrojem pro zjednodušení zadání složitější 3D grafiky. Obrázek ukazuje jednoduchou texturu nalevo, kterou pokud aplikujete na rovný povrch, automaticky jej Teselátor s Displacement mapou převede do 3D modelu. Podobný model bychom běžným způsobem vytvářeli dlouho, a jeho popis pro GPU by byl rozsáhlý. Definovat takový tvar běžně pomocí polygonů by bylo neuvěřitelně složité. Naopak pro Teselátor s Displacement mappingem stačí definovat výšku černých bodů, o vše se už postará jednotka sama. Nejkrásnější na tom je, že počet polygonů základního modelu je úplně minimální, jedná se v podstatě o rovnou plochu a prostorový efekt je dále definovaný v height-map textuře, kterou vidíte nalevo. Více podrobností o této technologii si můžete přečíst na wikipedii.

Rozhraní DirectX 11 a jeho nejbližší budoucnost

Na rozdíl od normálových a parallax map, které jsou definovány umístěním pixelů, Displacement mapa je definována pozicí vrcholů (například barevně odlišených). Používat na objekty jen Displacement mapy by bylo ale hardwarově náročné, proto se kombinuje s klasickým Bumb mappingem a normálovými mapami. Například k vytvoření děr na povrchu, což reprezentuje obrázek se dveřmi a dírami po kulkách. Obrovskou výhodou je i přes jednoduché zadání objektu, jeho reálný vzhled a chování v animacích.

Stíny, hrany a všechny aspekty vždy odpovídají modelu a nejsou z žádného pohledu deformované. Ještě jednou k obrázku dveří. Běžně je možné vystřílet stopy kulek do železných dveří, ovšem bez viditelného prohnutí míst kolem vstupů kulek. Pomocí Displacement mapy kolem otvorů je to hračka. Kolem průstřelů jsou "prohnutá" místa směrem do dveří, a třeba i z pohledu z boku vidíte opravdu deformace a ne jenom plochý 2D "texturový efekt díry" bez dynamických stínů a dalších efektů.

Rozhraní DirectX 11 a jeho nejbližší budoucnost

Příkladem kompletně zpracovaného 3D modelu, kde byla použita Teselace a Displacement mapa je postava Impa na obrázku. Vlevo nahoře je základní model ze zjevně ostrými hranami. Ten je posléze Teselován, výsledkem je hladký model bez ostrých hran a přechodů. I když je model hladký, nejsou na něm žádné detaily. Ty jsou přidány pomocí Displacement mapy na poslední obrázek vpravo dole. Výsledný model bude následně otexturován a výsledek opravdu stojí za to. Z relativně jednoduchého prvotního modelu jsme pokročilou DX11 technikou dosáhli skvělého výsledku.

Proces Teselace

Rozhraní DirectX 11 a jeho nejbližší budoucnost

O změnách v Direct3D 11 grafické pipeline jsme si už říkali. Do té klasické přibyly jednotky Hull Shader, Tesselator a Domain Shader. První a třetí jsou plně programovatelné, pouze funkce Teselátoru je pevně daná a neměnitelná, dá se ovšem ovlivnit nastavením. Projděme si funkce všech jednotek, tak jak jimi data procházejí.

Úplně první jednotkou je Input Assembler, jež v DX11 hardware umí kromě základních prvků (primitives) - trojúhelník, bod, čára, pracovat i s celými pláty (patch). Tato funkce je podmíněna zapnutou Teselací. Zde je nutné říci, že v DX11 pipeline není základní jednotkou trojúhelník, ale právě celý plát (patch). Zde jsou potřebná data připravována, kdy jednotka určí, která a kam patří. Data jsou označena a poté putují grafickou pipeline dále.

Druhý v řadě je Vertex Shader. Zde jsou v prvé řadě transformovány kontrolní body plátů (patche). Tuto jednotku je také možné použit k animacím, fyzikálním efektům a spoustě dalších operací s barvou, světlem. V našem konkrétním případě je nejdůležitější funkcí příprava kontrolních bodů plátů pro další Teselační stupně.

První novou jednotkou je Hull Shader, který transformuje základní polygonové sítě do povrchových plátů. Z kontrolních bodů dodaných Vertex Shaderem dokáže tato jednotka vytvořit už podklad pro Teselátor. V první fázi jsou základní informace o trojúhelnících nahrazeny Béziérovým plátem, jež specifikuje počet výsledných trojúhelníků, jejich pozici a další informace. Výstupem z Hull Shaderu jsou data pro Teselátor (Teselační faktor), která putují nejen do Teselátoru, ale také do Domain Shaderu.

Poté následuje proces Teselace, jež převede předpřipravený Bézierův plát, do vypočítaného počtu trojúhelníků z dat dodaných Hull Shaderem. Výstupem jsou v tomto případě pouze koordináty budoucího povrchu.

K dokončení celé operace pak dochází v Domain Shaderu. Zde skutečně vznikne finální podoba povrchu z dat dodaných Teselátorem a Hull Shaderem. Ta jsou nejprve porovnána, zdali Teselátor provedl co mu Hull Shader poslal, a pokud ano je na výsledek aplikována Displacement mapa a hotový plát putuje dále ke zpracování grafickou pipeline. NVIDIA přidala do své Teselační pipeline ještě několik interních "odboček", kdy se data ještě porovnávají a upravují z hlediska pohledu a LOD, pak teprve pokračují dále.

Důležité je, že od prvotních informací dodaných do Input Assembleru až po výsledný Teselovaný plát s Displacement mapou, vycházející z Domain Shaderu jde o jednoprůchodový proces. Data se nikam nevracejí, žádná funkce se nemusí opakovat. Stále postupují kupředu, což zvyšuje efektivitu.

Výhody Teselace

Rozhraní DirectX 11 a jeho nejbližší budoucnost

Změny výrazu obličeje a animace pomocí Teselace

Pokud jste pozorně četli, byla většina výhod již řečena. Zde je tedy ještě zopakuji a doplním. Vývojář her nebo grafik nepotřebuje strávit tolik času přípravou složitých modelů, a jejich variant s nižším LOD (úroveň detailů). Pro DX11 stačí jednoduché základní modely, o zbytek se již postará hardware za přispění Displacement mapy a Teselátoru. Základní model zabere v paměti méně místa, stejně je redukováno i množství dat proudící PCIe sběrnicí.

Druhá stránka je samozřejmě vizuální. Objekty ve hře mohou být zaoblenější, detailnější a více se blížící realitě. Už žádné placaté a hranaté postavy, nebo podivně vypadající ploché prostředí. Třetím aspektem je optimalizace vizuálu vzhledem k výkonu grafické karty bez nutnosti zásahu programátora. Na slabším hardware se automaticky nastaví nižší LOD, u nejvýkonnější karet naopak. Hra bude ale plně kompatibilní s každým DX11 hardwarem na trhu.

Praktická implementace

Rozhraní DirectX 11 a jeho nejbližší budoucnost

Na několika webech se objevila krapet zavádějící informace, že na starý DX9 (DX10) titul lze nějakým způsobem "naroubovat" DX11 rozšíření (Teselaci). V podstatě je to pravda tak napůl, nejjednodušší formu PN-Triangles je možné do těchto her přidat, s vyvíjenou hrou se všemi modely s ohledem na DX11 a Teselaci se to nedá vůbec srovnávat. Technika PN-Triangles je nejzákladnějším způsobem jak na Teselaci, ale také jedinou možnou implementovat do stávajících herních enginů. Problém je v tom, že tím zkrátka ostny na drakovi nevykouzlíte, není to možné. Podívejte se, co je možné pomocí PN-Triangles do her přidat:

Rozhraní DirectX 11 a jeho nejbližší budoucnost

Pomocí této techniky lze na modely, které nikdy nebyly vytvořeny s ohledem na možnost Teselace, vylepšit (nafouknout) jak vidíte na obrázku. Pomocí patche lze tuto možnost celkem jednoduše naučit stávající herní engine. Pokud se ale podíváme na současné DX10 hry s DX11 patchem, nic z těchto technik přidáno nebylo. Jedinou cestou pro skutečné DX11 herní tituly, je zohlednit toto API už při vývoji. Stejně jako to bylo provedeno u her Aliens Vs Predator, S.T.A.L.K.E.R. Call Of Pripyat, DiRT 2 atd. I přesto, rozdíly proti DX9 pozná jeden člověk z tisíce, jak si ukážeme v samostatné kapitole.



 
Komentáře naleznete na konci poslední kapitoly.
226 čtenářů navrhlo autorovi prémii: 53.8Kč Prémie tohoto článku jsou již uzavřené, děkujeme za váš zájem.
Tento web používá k poskytování služeb soubory cookie.