DirectX 11 přichází – co přináší a nabízí? O krok blíž k fotorealismu?
Těsně před příchodem nové generace DirectX technologie, je na čase si říci, co nám přináší a co od ní můžeme čekat.
DirectX 11 a nová generace grafik už není záležitostí vzdálené budoucnosti, ale právě vchází do dveří. Tento článek vychází doslova v předvečer vydání DX11 grafické generace a je tedy na místě si konečně o finálních možnostech této technologie něco povědět. Samozřejmě nás celá věc nezajímá ani tak jak to celé funguje, ale hlavně nás na ní jako uživatele zajímá, co nám reálně přinese. A tak si dnes rozebereme DirectX 11 ze všech stran a úhlů. Jsou na místě přehnaná očekávání, nebo je to všechno jen další mazání medu kolem pusy?
API – aby nám ty grafiky byly k něčemu
Na úvod trochu úvodů do tématu. Asi každý z vás ví, že v počítači je něco, co se jmenuje grafická karta. Ostatně podle toho, jak vypadají diskuse, mám pocit, že grafická karta je to, okolo čeho se počítače točí. Jako fanda nekompromisních úrovní počítačové grafiky ve hrách proti tomu nic nemám ;), ale samozřejmě je grafická karta jen součást celku.
Grafika na sobě nese cosi, čemu říkáme grafické jádro, což je něco jako CPU (procesor), akorát se tomu říká GPU (Graphics Processing Unit). Na rozdíl od procesorů, které již v sobě nesou sadu instrukcí (jedničky a nuly), podle kterých funguje a běží na nich software, grafické procesory a jádra v sobě podobnou záležitost přímo od výrobce daného čipu, která by byla kompatibilní s ostatními sadami jiných výrobců, nemají. Musí tedy existovat něco, co je standardem a co umožní využít možnosti a schopnosti každého GPU a tvořit software, který bude možností GPU využívat a bude dělat to, co chce vývojář dané aplikace, aby dělal a ne to, co mu umožní dělat jednotlivá GPU od různých výrobců, což by v důsledku byla pravděpodobně nepoužitelnost.
(ATI Radeon RV870 DX11 40nm - 1600SP v 5D a 2,73Tflops výkonu!)
Tím něčím je u GPU a grafik tzv. API (Application Programming Interface). Toto speciální softwarové rozhraní je standardizované, a obsahuje jasně definované nástroje, možnosti a řešení tvorby grafiky i dalších záležitostí. Hlavní úlohou API je uspořádat data tak, aby je každé GPU, které danou verzi API podporuje, bylo schopné zpracovat a na konci vyhodit požadovaný výsledek, nejlépe v použitelném stavu.
V současnosti mají grafické čipy poměrně velmi složitou stavbu a jedná se o možná ty nejsložitější procesory vůbec. Mají přesně uspořádány jednotky a části jádra tak, jak vyžaduje software, samozřejmě s dílčími vylepšeními, protože samozřejmě lze nalézt mnoho způsobů a cest, jak se dostat ke kýženému výsledku. Postup zpracování dat v GPU je pak jednoduchý od určení pozic vrcholů objektů, které jsou definované trojúhelníky. Ty jsou následně v daných 3D objektech rozloženy do mnoha 2D částí, kterým říkáme pixely, ty jsou následně zpracovávány, pokud jde o jejich barevnost, nasvětlení, nastínování a jiné techniky, kterých je stále více a více. Následně je to zase všechno složeno, a posláno na výstup na náš monitor. To je ale jen velmi hrubý popis celého složitého děje a hlavně jen část toho, co dnes moderní GPU a API dokáže. Více nás ale ani jako běžné uživatele nezajímá, nás zajímá to, zda výsledek na konci bude stát za ty peníze, které za to dáme a našim datům za tu cestu, kterou musí skrze grafiku absolvovat.
Pokud jde o API, tak asi nejznámější jsou dvě grafická prostředí. Tím, které je dnes v menšině, je OpenGL, které bylo dříve populární i ve hrách, v poslední době ale zaostává a dokonce i některé profesionální aplikace, které dříve stavěly hlavně na OpenGL, v nových verzích budou stavět na DirectX 11. To ale neznamená, že by OpenGL řeklo poslední slovo. Ještě před tím si ale řekněme název toho druhého API, o kterém se dnes budeme bavit. To je dnes velmi dominantní a známe jej pod názvem Microsoft DirectX. Jak už ale bylo řečeno, API dnes umí více než jen poskytovat nástroje pro zpracování grafiky a stejně tak GOU toho zvládnou více. Přichází doba GPGPU technologií (výpočtů přes grafiky) které mohou akcelerovat například zpracování videa, vědecké výpočty, šifrování, akcelerace fyziky atd. I toto nové verze API se značnými rozšířeními nabízejí. OpenGL je například součástí OpenCL, které je standardem GPUGPU, stejně tak je DirectX 11 a vedle něj je DirectCompute 11, které jsou taktéž novými standardy v této oblasti. A právě DirectX, které nás dnes zajímá nejvíce, se budeme věnovat …
Microsoft DirectX
Historie tohoto dnes nejrozšířenějšího standardu API je opravdu bohatá a čítá mnoho významných evolučních verzí i menších update. DirectX je balíčkem mnoha komponent a v současnosti v základu obsahuje toto:
DirectDraw: pro vykreslování 2D grafiky (rastrová grafika); nahrazeno Direct2D), avšak stále používáno ve hrách a pro renderování videa multimediálních aplikací
Direct3D (D3D): pro vykreslování 3D grafiky
DXGI: pro zjištění grafických adaptérů a monitorů, které jsou k dispozici; poskytuje společný základ pro Direct3D a OpenGL
Direct2D: pro 2D graficku
DirectWrite: pro fonty
DirectCompute: pro využití GPU pro výpočty
DirectInput: rozhraní pro vstupní zařízení (klávesnice, myš, joystick, různé herní ovladače); po verzi 8 nahrazeno rozhraním XInput pro ovladače Xbox 360 nebo standardní WM INPUT
DirectPlay: pro komunikaci přes počítačovou síť; po verzi 8 označeno jako zastaralé
DirectSound: pro přehrávání a záznam zvukových samplů
DirectSound3D (DS3D): pro přehrávání 3D zvuků
DirectMusic: pro přehrávání zvuků vytvořených DirectMusic; označeno za zastaralé
DirectX Media: zahrnující DirectAnimation pro webovou 2D/3D[1] animaci, DirectShow pro přehrávání multimédií a streamování, DirectX Transform pro webové interaktivní aplikace a Direct3D Retained Mode pro 3D grafiku vyšší úrovně; DirectShow obsahuje DirectX pluginy pro zpracování audiosignálu a DirectX Video Acceleration pro akcelerované přehrávání videa
DirectX Diagnostics (DxDiag): nástroj pro diagnostiku a podání zpráv o stavu jednotlivých komponent (audio, video, vstupní ovladače)
DirectX Media Objects: podpora pro streamované objekty (enkodéry, dekodéry a efekty)
DirectSetup: pro instalaci komponent DirectX a zjištění jeho aktuální verze
Stručnou historii vydávání DX pak lze nalézt na wiki a najdeme tam tento pěkný přehled.
První verze knihovny DirectX 1.0 spatřila světlo světa už v roce 1995. Dnes už je na světě verze DirectX 11 a za sebou má tedy vývoj čítající 14 let. Nás dnes zajímá právě ona nejnovější verze, DirectX 11, která je podle všeho opět jednou z nejdůležitějších verzí tohoto standardizovaného balíčku, která výrazně ovlivní tvorbu softwarů a vývoj několika dalších let, podobně jako jím byl DirectX 9, který k naší hrůze (zejména z ustrnulého grafického herního vývoje) stále dominuje i letos, skoro 3 roky po vydání DX10. Podívejme se tedy na samotný z brusu nový DirectX 11 …