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.


Teselace je nyní často v souvislosti s Direct3D 11 zmiňována, nejedná se ale o novou techniku. Až do této chvíle ale nebyla tato technika pevně daná ve specifikacích Direct3D, tedy ji vývojáři mohli využít dle svého uvážení, nic je k tomu ale nenutilo. Grafické karty byly schopné vykonávat Teselaci už v pradávných dobách DirectX 8. Tehdejší metody měly mnohdy velký dopad na výkon, a výsledky nebyly přesvědčivé.

Teselátor

Na čas tato technika usnula a k jejímu vzkříšení došlo s Radeonem HD 2900 XT, který nesl samostatnou jednotku - Teselátor. Od této chvíle se Teselace a její principy dostaly více na veřejnost a povědomí o této technice má velká většina čtenářů. Nutno ale říci, že už čtyři generace grafických karet ATi jsou vybaveny touto jednotkou, využít ji bylo možné jen v několika demech. Až nyní se čtvrtou generací se snad konečně dostane více ke slovu, jelikož se Teselace stala pevnou součástí grafické pipeline Direct3D 11. Konkurence také obdobu jednoduchého Teselátoru ve svých starších kartách měla, s opravdovým moderním Teselátorem se ale setkáme premiérově až s příchodem grafik na bázi architektury Fermi.

Rozhraní DirectX 11 a jeho nejbližší budoucnost

Pro maximální vizualizaci využíváno zejména dvou technik - Teselace a Displacement mapping. Zjednodušeně řečeno, Teselace rozděluje velké trojúhelníky na menší a Displacement mapping mění jejich relativní polohu vůči základnímu bodu. Společně obě techniky dokáží vymodelovat opravdu detailní a visuálně propracované tvary, z relativně jednoduchého prvotního vektorového modelu.

Level Of Detail

Díky Teselaci a Displacement mappingu je pak možné také velice dobře přizpůsobit scénu výkonu grafického hardware. Pokud prostě grafická karta nestačí, scéna se bude renderovat s menšími detaily. Stejně tak potom není problém renderovat blízké objekty v perfektní kvalitě a naopak vzdálené modely, které ani nejsou pořádně vidět, lze snadno "ošidit" a vykreslit s minimem detailů. Této technice se říká Level Of Detail (LOD) a o její aplikaci se stará přímo GPU automaticky bez zásahu programátora. Ve specifikacích Direct3D 11 je maximální úroveň detailů hodnota 64.

 Rozhraní DirectX 11 a jeho nejbližší budoucnost Rozhraní DirectX 11 a jeho nejbližší budoucnost

Jak může LOD vypadat ukazují následující dva obrázky (klikněte pro zvětšení). Nejprve se podívejme na obrázek s hlavami. Pokud bude tento model umístěn ve scéně někde daleko od očí hráče, není nutné aby byl tvořen tisíci trojúhelníky. V tomto případě mu bude automaticky přidělen LOD například hodnoty 8 a síť trojúhelníků bude vypadat jako na hlavě vpravo. Pokud se ale budete stejnému modelu dívat zblízka do tváře, zjemní GPU automaticky model vyšším počtem trojúhelníků, aby vypadal vizuálně dobře. Tento případ zobrazuje hlava nalevo. Dalším využitím LOD je skrytí detailů modelů, které hráč vůbec nevidí. Pokud se budete na objekt dívat z boku, nemusí být skrytá strana renderovaná vůbec a počet trojúhelníků 3D modelu může být nízký (uvidíte to na screenu ze S.T.A.L.K.E.R. Call Of Pripyat). Další možností je aplikování LOD jen na část modelu, třeba na jeho hrany.

Rozhraní DirectX 11 a jeho nejbližší budoucnost

Obrázek ukazuje model, jež má ve své původní podobě "zubaté" hrany obrysu, je to vidět na menším obrázku. Na model je poté aplikována adaptivní Teselace, kdy se ale díky možnosti nastavení LOD nezvýšil počet trojúhelníků na celém modelu, ale jen u zubatých hran. To je jasně vidět u obrysu objektu, který je na větším obrázku zaoblen.

Pozitivním aspektem je skutečnost, že technika LOD šetří výkon GPU a řídí efektivně zátěž. U starších technik byl počet trojúhelníků dán pro každý model pevně, ať byl v popředí nebo daleko od očí pozorovatele. Nejpodstatnějším argumentem je ale hlavně zcela automatický systém, kdy si LOD řídí sama grafická karta bez dalšího zásahu vývojáře hry.

Teselace

Rozhraní DirectX 11 a jeho nejbližší budoucnost Rozhraní DirectX 11 a jeho nejbližší budoucnost

První dvojice obrázků (klikněte pro zvětšení) ukazuje stávající způsob tvorby modelů do her. Většina dnešních vývojářů začne přípravou prvotního modelu s obrovským počtem polygonů (až 100 tisíc trojúhelníků). To vyžaduje čas a hodně manuální práce. Takhle hustá polygonová síť je náročná na animaci a potřebuje k ní mnoho výkonu GPU. Proto se ve finální hře pracuje s "ošizenými" modely, vzhledem k dosažení plynulých fps.

Ze základního modelu je nutné vytvořit spoustu dalších, s různým stupněm LOD. Do hry potřebujeme několik různě detailních modelů. Jeden pro zobrazení zblízka, další z menší vzdálenosti nebo z boku, další pro nejvzdálenější pohled a tak dále. Každý z těchto modelů se vytváří ručně a trvá to nějaký čas. Velkým problémem jsou nároky na paměť. Hodně prostoru zabere samotný model s velkým počtem polygonů, ale ještě víc je potřeba pro všechny variace modelu s různým LOD.

Pro hru je totiž nutné, aby byly v paměti všechny varianty zároveň (platí pro DX9, u DX10 už to nutné není). To neúměrně zatěžuje nejen paměť karty, ale také sběrnici kudy data do karty proudí (PCI Express). Například u střílečky může být zároveň na jedné scéně několik desítek modelů s různým LOD a všechny musí být nahrány v paměti, aby hráč nepostřehl při změně jejich polohy nějaké zpoždění s načtením. Nedostatky tohoto řešení jsou tedy zřejmé - Časová náročnost tvorby základního modelu, včetně všech variant s různým LOD. Vysoké nároky na paměť karty a propustnost PCIe rozhraní, animace modelů je náročná na výkon. Všechny tyto problémy řeší právě Teselace. Podívejme se nejprve jak funguje:

Rozhraní DirectX 11 a jeho nejbližší budoucnost

Hlavní funkce je "vyrobit" z mála trojúhelníků větší počet. Základní model může být například tvořen několika desítkami trojúhelníků, pomocí Teselace je můžeme znásobit i tisíckrát. Podívejte se na část známé prezentace AMD. Základní model je tvořen několika stovkami trojúhelníků. S níže nastaveným LOD, Teselátor převede model na tisíce trojúhelníků (hlava uprostřed). S maximálním nastavení LOD čítá síť polygonů statisíce trojúhelníků. Základní myšlenka je zjemnění "hranatých" modelů a dosáhnout co nejvyšší zaoblenosti patřičných hran. Jaký je hlavní rozdíl pro práci vývojáře her? - Zásadní!

Vývojář totiž nepotřebuje začít s detailním modelem ze statisíců trojúhelníků, jako v prvním případě. Pokud uvažuje o použití Teselace, je tomu právě naopak. Prvotní model může být vytvořen jednoduchý, pouze z několika málo trojúhelníků. Zbytek detailů si totiž dále vytvoří nastavením Teselace a aplikováním patřičných textur. To významně zkrátí původní práci s přípravou modelu. Také zde zcela odpadá ruční úprava základního modelu na varianty s různým LOD, o to se už postará grafická karta sama. Modely s různým stupněm LOD se tak ve finální hře nemusí mezi sebou střídat, ale dochází ke změně LOD dynamicky na jednom základním 3D modelu.

Tímto eliminujeme všechny základní nedostatky běžné tvorby 3D modelů. Grafik ušetří čas, a nároky na paměť jsou díky prvotnímu zadání s malým počtem polygonů nízké. Do paměti se také nemusí načítat různé verze modelů s rozdílným LOD, opět tedy uspoříme místo v paměti a nepotřebujeme takovou propustnost PCIe rozhraní. Díky adaptivní Teselaci je i animace objektů jednodušší, změny se aplikují pouze na danou část modelu. Pokud se například má postava usmát, pomocí Teselace se upraví okolí úst a nic dalšího.

Rozhraní DirectX 11 a jeho nejbližší budoucnost

Zde vidíme stejný model z úvodního obrázku. Jde o 3D objekt z polygonů vybavený Displacement mapou. Pokud bychom model vytvořili dnes běžnou metodou s detailním základním modelem, byly by při nejvyšších možných detailech modelu a Displacement mapy nároky na paměť více než 1 GB! A to jen pro jeden model bez dalších variant s různým LOD. V případě, že použijeme Teselaci a Displacement mapu se stejným LOD, budou nároky na paměť jen 118 MB, což je téměř desetkrát méně při stejné vizuální kvalitě. To už je opravdu pádný důvod pro použití těchto technik.



 
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.