3D Grafika na desátou

1. 4. 2007

Sdílet

DirectX 10 přináší revoluční změny do her a programů Takové množství zásadních inovací a změn svět po...


DirectX 10 přináší revoluční změny do her a programů



Takové množství zásadních inovací a změn svět počítačové grafiky zažil naposledy před deseti lety s příchodem DirectX 3.0. S nástupem Direct X 10, Shader Modelu 4 a unifikované architektury shaderů přichází nová éra 3D grafiky na PC. Na následujících stránkách se vám pokusíme slovem i obrazem vysvětlit, v čem tato revoluce spočívá.
První grafické čipy s podporou DirectX 10 (či krátce DX10) jsou již na světě v podobě GeForce osmé generace. V prodeji je též první operační systém, který bude Direct X 10 podoporovat. K naší velké lítosti to nejsou osvědčená Windows XP, ale snad až příliš nová a hladová Vista. DX10 je zcela odlišné a není zpětně kompatibilní (v systému naštěstí může koexistovat spolu s podporou starších verzí DX9) tento radikální řez byl ale do značné míry nutný, aby se rozhraní zbavilo zbytečného balastu posledních deseti let.
Aby hardware a software spolupracovaly bezchybně, je třeba stanovit jasná pravidla. Ta jsou napevno dána v programovacím rozhraní (API Application Programing Interface). Ve Windows byl tradičně možný výběr dvou grafických API: Open GL (Open Graphics Library), jež bylo původně vyvinuto pro profesionální aplikace jako je CAD či vizualizace a je nezávislé na operačním systému (najdete jej tedy i v jiných OS než Windows), a Direct 3D, grafického subsetu DirectX, které bylo původně vyvinuto pro hry a multimediální aplikace. V době masového nástupu prvních grafických karet před deseti lety se vše ale poněkud promíchalo, neboť tehdejší verze DirectX 3.0 zaostávala za možnostmi nového grafického hardwaru a vývojáři sáhli nejprve po zjednodušených a následně i plnohodnotných variantách OpenGL do této skupiny patřilo jednak rozhraní Glide společnosti 3Dfx a pochopitelně také legendární hra Quake. Microsoft se k OpenGL ve Windows Vista zachoval zcela v souladu se svou rezervovaností (řečeno se značnou dávkou politické korektnosti) k otevřeným standardům: pohřbil jej. Od původní myšlenky vůbec Open GL nepodporovat bylo nakonec upuštěno, k dispozici je ale pouze emulace do verze 1.4 (nejnovější aktuální verze je 2.1 podle specifikace ze srpna 2006). Jakákoliv širší či kvalitnější podpora OpenGL tedy leží na bedrech výrobců grafických čipů, přesněji závisí na tom, zda budou investovat čas a energii do vývoje vlastních ovladačů a potřebných knihoven. Faktem ale je, že většina vývojářů, zejména herních studií, preferuje v současné době Direct 3D, jako centrální část DirectX. Microsoftu tato situace pochopitelně vyhovuje: jejich API existuje pouze pro Windows a konzolz Xbox, což znamená nezanedbatelnou konkurenční výhodu. V tomto duchu se nese i rozhodnutí nabídnout DX10 pouze uživatelům systému Vista. Od Microsoftu je to vychytralý tah, jak nový OS "zatraktivnit" v očích hráčů, kteří jinak "výdobytky" Visty (nižší výkon ve hrách pracujících s DX9, problémy s OpenGL či podporou 3D zvuku) nejsou příliš nadšeni. Ano, DX10 je výrazně odlišné a některé jeho funkce a vlastnosti úzce souvisí s odlišným způsobem fungovaní systému Vista (zejména komunikace ovladačů s grafickým hardwarem apod.) to ale neznamená, že ho není možné, byť s jistými náklady, implementovat do rozšířených Windows XP.

Multitasking, stabilita a zatížení CPU

Vzhledem k tomu, že pod Windows Vista mohou aplikace komunikovat přímo s grafickým hardwarem, musel Microsoft poměrně zásadně změnit desátou verzi Direct3D. Nová verze WDDM 2.0 (Windows Display Driver Model 2.0) například umožňuje 3D-multitasking. Pomocí řadičů vláken (thread schedulers) může být každé aplikaci dynamicky přiřazena virtuální grafická paměť. K tomu je nezbytný správce videopaměti, který uvolňuje potřebnou kapacitu na grafické kartě a přesouvá virtuální videopaměť neaktivních aplikací do systémové paměti či do stránkovacího souboru. Současná generace DX10 kompatibilních grafických karet ale tuto funkci bohužel prozatím jen emuluje v ovladačích: její hardwarová podpora se patrně objeví až s příchodem WDDM 2.1 a DX10.1 v roce 2008. Teprve pak budou tyto operace přeneseny do grafického čipu v současné době spočívají na bedrech procesoru, přičemž v situaci, kdy je třeba spravovat více aplikací s 3D zobrazením současně, může pouze správa videopaměti zatížit CPU až na 50 %. Nový WDDM nabízí výrazně lepší stabilitu grafického subsystému, neboť v případě selhání či záseku GPU ho dokáže restartovat, aniž by to ohrozilo běh aplikace či OS. To mimo jiné znamená, že lze instalovat a zprovoznit nový ovladač grafické karty bez restartu Windows. Za zmínku stojí, že ve Vistě přebírá úlohu grafického rozhraní (GDI) Direct3D aplikace Desktop Windows Manager. DWM spravuje všechny 2D a 3D prvky grafického uživatelského rozhraní a umožňuje běžícím programům přímou komunikaci s grafickým hardwarem. Další změna se týká vyšší efektivity práce s grafickým hardwarem: zatímco ve Windows XP pracují programy využívající D3D v uživatelském módu, ovladače běží výhradně v kernel módu. Ve Vistě pracují i ovladače v uživatelském módu, čímž se usnadňuje volání 3D funkcí, omezuje se volání mezi uživatelským a kernel módem a celkově se efektivita práce s grafickým hardwarem zvyšuje.

Shader Model 4.0

Grafické rozhraní Shader Model 4.0 je mnohem flexibilnější než předchozí verze. Umožňuje například spojovat grafické příkazy se všemi potřebnými formáty adres a grafických dat. Mezi základní požadavky Shader Modelu 4.0 patří t5eba možnost současné aplikace HDR vykreslování a vyhlazování hran (antialiasing).
U dosavadních GPU probíhalo vykreslení 3D scény v oddělených fázích. Nejprve obdržel grafický procesor data pro výpočet geometrie 3D scény v jednotkách vertex shader nejprve vrcholy všech trojúhelníků. Ty jsou následně spojeny čarami a je tak vytvořen trojrozměrný "drátěný" model scény. Ve třetím kroku vypočtou jednotky pixel shader barvu jednotlivých bodů a aplikují na povrchy textury. Na závěr je scéna zpracována rasterizačními jednotkami, v nichž jsou aplikovány nejrůznější efekty jako vyhlazování hran, průhlednost či viditelnost (vzájemné zakrytí) jednotlivých objektů a obrazová data jsou uložena do paměti grafické karty. Tento postup vyžaduje opakovanou výměnu dat o 3D scéně mezi CPU a grafickým čipem, což zbytečně zdržuje výpočet a zatěžuje systém. Nyní se GPU konečně osamostatní: Shader Model 4 totiž přenáší veškeré operace s geometrií 3D scény na grafickou kartu, je tak tedy eliminována opakovaná výměna dat mezi GPU a CPU. Nejen, že výpočet 3D scény může probíhat uvnitř GPU plynuleji, ale omezí se i zatížení a zdržení, k němuž dochází při používání (z hlediska CPU a GPU) pomalých rozhraní jako je PCI Express. Dílčí výpočty lze navíc využívat jako vstup pro další grafické operace přímo v GPU, čímž se výrazně zvyšuje efektivita grafického čipu a tedy i jeho výkon. Zásadní novinkou DX10 je nový typ shader jednotek. Dosavadní GPU pracovaly se dvěma typy: vertex shader jednotky sloužily ke zpracování verticí, tedy vrcholových bodů pro trojúhelníky ve 3D modelu, a pixel shader jednotky pracovaly s vlastními zobrazovanými body. Nové geometry shader jednotky jsou, podobně jako vertex shader, určeny pro práci s geometrií, manipulují ale s celými 3D objekty umožňují tak mnohem efektivnější práci se složitými 3D scénami. Jednou z technik, které je možné díky tomu snadno použít v nových hrách, je displacement mapping, u nějž je z ploché textury vytvořen 3D model podrobného povrchu, takže detaily struktury povrchu je možné vnímat i z malé vzdálenosti či ostrých úhlů. Nové shader jednotky a celková vyšší efektivita práce s 3D scénou též umožňují zcela běžně používat efekty jako je motion blur, či podrobné modely vlasů, srsti nebo vegetace, které dříve znamenaly výraznou zátěž, či jednoduchou aplikaci efektů jako je morphing. Světlo a stíny jsou další oblastí, kde se dočkáme výrazného posunu vpřed. Zejména dynamické stíny promítané ve 3D prostředí byly doposud penalizovány značným poklesem výkonu, neboť velká část výpočtu musela proběhnout na CPU. I tyto operace lze nyní z velké části přenést na geometry shader a z dynamických detailních stínů s jemnými přechody tak udělat standardní prvek v DX10 hrách. Zcela novou oblastí, kde mohou být GPU nasazeny, je herní fyzika zejména ta spojená s vykreslováním dynamických prvků jako je kouř. Díky univerzálnosti a vysokému výkonu shader jednotek je možné některé fyzikální výpočty provádět na GPU (pravdou je, že v omezeném měřítku to bylo možné již u předchozí generace GPU AMD/ATI). GPU se navíc stávají velmi atraktivní výbavou nejen pro hráče, ale i pro výzkumná pracoviště nVidia pro toto využití připravila speciální rozhraní Compute Unified DEVICE Architecture (CUDA), díky kterému lze s grafickým procesorem pracovat jako se speciálním koprocesorem (GPGPU, General Purpose GPU vice na http://developer.nvidia.com). AMD plánuje speciální verze nových Radeonů s čipem R600, určené především pro fyzikální výpočty.
DX10 klade pochopitelně mnohem vyšší nároky na výpočetní možnosti a přesnost všech shader jednotek specifikace jsou dokonce tak blízké, že pro výrobce GPU je jednodušší vybavit grafický čip velkým počtem univerzálních shader obvodů, které mohou podle potřeby fungovat jako vertex, pixel či geometry shader. To, že nová GPU nVidia a ATI mají, respektive budou mít "sjednocené" shadery, je tedy spíše praktické rozhodnutí než nutnost. Výhodou takového řešení je ale i flexibilita počet jednotek, které se chovají jako pixel, vertex či geometry shader, lze měnit podle požadavků hry či aplikace a využít tak maximálně potenciální výkon GPU. Vyžaduje to ale pochopitelně sofistikovanou řídící logiku, která alokaci shader jednotek optimalizuje.

Příklad architektury DX10 GPU

Prvním grafickým procesorem podporujícím nové Direct X 10 se stala již v minulém roce GeForce 8800. Opakovaná zdržení konkurenčního Radeonu X2xxx znamenají, že nyní, v době reálného uvedení DX10, nabízí odpovídající hardware pouze nVidia.
Uvnitř G80 je realizována myšlenka sjednocených shaderů v plné kráse: pixel, vertex a geometry shadery, stejně jako další funkce využívají stejné obvody. To znamená, že vlastní shader jednotky jsou navrženy jako univerzální obvody (vzdáleně připomínající vektorové procesory v architektuře cell). Moderní GPU se tak v mnoha směrech podobá klasickému procesoru, je ale nesrovnatelně větší. G80 obsahuje 681 milionů tranzistorů, tedy více než nedávno uvedený čtyřjádrový Core 2 Quad procesor s jádrem Kentsfield (předchozí GPU G71 mělo přitom jen 278 milionů tranzistorů). Ostatně není divu v jádru G80 je 128 jednoduchých "stream" procesorů a jádro shaderů běží na frekvenci 1,35 GHz (samotný čip pracuje pomaleji podobné řešení naleznete i u běžných CPU).
Tyto stream procesory jsou řazeny do osmi bloků po šestnácti procesorech, přičemž každému bloku jsou přiřazeny čtyři texturovací adresovací jednotky, osm jednotek texturových filtrů a samostaná L1 cache. Obrovské množství stream procesorů, texturovacích jednotek a samostatných cache pamětí, spolu s jejich univerzálností a vzájemnou nezávislostí bloků, znamená nejen obrovský výkon v grafických operacích, ale též možnost využít G80 pro speciální výpočty. V určitých oblastech může být GPU výrazně rychlejší než CPU kupříkladu ve srovnání s 2,66 GH Core 2 Duo CPU může být G80 až 10x rychlejší při výpočtech herní fyziky, 47x výkonnější při výpočtech biologických sekvencí a bezmála 200x výkonnější u některých specializovaných finančních výpočtů. Nové GeForce tak budou v budoucnu zpracovávat nejspíše i herní fyziku, nebo se objeví v počítačích finančních analytiků.

DX10 hry: přicházejí?

Drtivá většina her, které se dostanou do prodeje v letošním roce, bude určena pro DX9. Vydavatelé dobře vědí, že bez dostatečného počtu uživatelů vybavených odpovídajícím hardwarem nemá smysl u mnoha her investovat do vývoje verze pro DX10. Pro některé hry se možná objeví dodatečné patche a plánováno je i několik prvních titulů s podporou DX10 zejména Crysis, Haze, Halo 2 (PC verze), Age of Conan a Shadowrun (podrobnější seznam naleznete v tabulce). U ostatních her ale nové karty jako je GeForce 8800 nabízejí nejvyšší možný výkon, takže stavíte-li nové herní PC, je rozhodně na místě investici do grafické karty podporující DX10 zvážit. V příštím roce již lze očekávat záplavu her podporujících DX10 (většina z nich bude patrně podporovat I DX9, mohou se ale objevit I první případy, kdy bude DX10 hardware prostě nezbytný).6 0112/LUC o

Pokud chcete začít přehrávat HD filmy na svém domácím počítači, budete potřebovat jediné: výkon. Zatímco při sledování klasického DVD je třeba za vteřinu zobrazit cca 10 milonů pixelů, u HD formátů je to 50-60 milionů. Dvoujádrový procesor s pracovní frekvencí alespoň 2 GHz je tedy téměř nutností. Pokud chcete spoléhat na klasické procesory s jedním jádrem, doporučujeme volit model s pracovní frekvencí 3,4 GHz (respektive značení 3400+ u Athlon 64) a více. Dvoujádrové řešení je ale přece jen lepší, neboť PC pak dokáže i během přehrávání HD filmu relativně svižně reagovat na případné požadavky uživatele a neskolí ho kdejaká úloha běžící na pozadí. Pro plynulé přehrávání je potřeba mít i dostatek operační paměti ideálně 1 024 MB. Protože jsou originální HDTV filmy na discích HD DVD a BD chráněny nakaženy technologií HDCP, budete potřebovat i kvalitní grafickou kartou s podporou HDCP na digitálním výstupu DVI či HDCP (prvně jmenovaný je vhodný pro monitory, druhý pak pro LCD a PDP televizory optimální je mít kartu s oběma výstupy podporujícími HDCP), minimálně 256 MB videopaměti a technologií urychlující dekódování HD videa (momentálně v této oblasti vede nVidia se svým PureVideo HD, ATI nabízí alternativu v podobě Avivo). Konečně pokud si hodláte kupovat originální HD filmy, musíte se vybavit příslušnou mechanikou HD DVD či Blu-ray a LCD monitorem s podporou HDCP. Ideální je pochopitelně 24" displej s nativním rozlišením 1 920 x 1 200, na němž bez problému přehrajete formát 1 080p. Pro přehrávání filmů v HD rozlišení je nutné sehnat nejen hardware, ale i softwarový přehrávač. Tedy aplikaci, která se bude o přehrávání videa starat. Mezi ověřené přehrávače patří například produkt Cyberlink PowerDVD 6.5. Existuje jak ve verzi, která podporuje Blu-ray disky, tak i v modifikaci pro přehrávání HD DVD. Samozřejmě, že obě verze přehrávače dokáží přehrávat i klasické DVD tituly. Dalšími alternativami jsou Nero ShowTime a speciální verze WinDVD.

Některé připravované hry s podporou DX10

NázevInternet Vydavatel Direct 3D10 Plánované vydání
Age of Conan www.ageofconan.com Funcom nativní 2. čtvrtletí 2007
Alan Wake www.alanwake.com Remedy nativní 2. čtvrtletí 2007
Bioshockwww.2kgames.com/bioshock Irrational Games nativní 2. čtvrtletí 2007
Company of H. www.companyofheroesgame.com Relic pomocí patche 1. čtvrtletí 2007
Crysis www.crysis-game.com Crytek nativní 3. čtvrtletí 2007
Flight Sim. X www.microsoft.com/games Microsoft pomocí patche 4. čtvrtletí 2007
Halo 2 (PC) www.bungie.net/Games/Halo3 Bungie nativní 2. čtvrtletí 2007
Haze http://hazegame.uk.ubi.com Free Rad.Design nativní 2. čtvrtletí 2007
Hellgate: London www.hellgatelondon.comFlagship Studios pomocí patche 2. čtvrtletí 2007
Shadowrun http://shadowrun.com Fasa Studio nativní 2. čtvrtletí 2007
UT 2007 www.ut2007.com Epic Games pomocí patche 2. čtvrtletí 2007
Shader model v3 a v4
FunkceSM 3.0 SM 4.0
Typy shaderů 1PS, VS GS, PS, VS
Maximální počet instrukcí programu pro shader 512/512 65536
Počet vstupních registrů PS/VS 10/16 32/16
Počet registrů pro konstanty PS/VS224/256 16 x 4096
Početní registry PS/VS (počet)32/32 4096
Počet textur PS/VS 16/4 128
Datový formát filtru texturInt8 Fp16
Datový formát pro Alpha BlendingInt8 Fp32
Maximální velikost textur2048 x 2048 8192 x 8192
Výstupy renderování4 8
Celočíselné operacene ano
Load operaceneano