Reklama

nVision 08: První pohled na DirectX 11

Na veletrhu nVision 08 ve slunném San Jose jsme dostali jedinečnou příležitost dozvědět se nemálo o nové generaci grafického API od Microsoftu. DirectX 11 přijde ve své zkušební podobě už tento podzim, finálně se jej dočkáme až s Windows Se7en, nicméně bude i pro Vistu.


Kevin Gee z Microsoftu se ujal vedení jedné z nejočekávanějších přednášek nVision 08. Nutno říct, že kadence jeho slov se blížila samopalu a také jednotlivé slajdy jsem občas nestihl ani pořádně vyfotit, natož o nich přemýšlet

Než vám "promítnu" všechny slajdy z prezentace Microsoftu na nVision, shrnu klíčové změny a přínosy DirectX 11 do několika bodů:

Reklama
  • teselace (zjednodušeně zjemnění trojúhelníkové sítě přímo na GPU) a s ní spjaté dva shadery:
    • hull shader
    • domain shader
  • compute shader: GPGPU (využití GPU pro obecné výpočty) a aplikace včetně fyziky
  • objektově orientované prvky v jazyku shaderů vyššího řádu (HLSL)
  • výše uvedené dává dohromady shader model 5.0
  • dva nové formáty komprese textur (jeden pro HDR s kompresí 6:1 a jeden bezztrátový pro LDR)
  • prvky deferred renderingu (odloženého): malé display listy

 

Řetězec zpracování (pipeline) Direct3D se ve své jedenácté verzi změní opravdu hodně. Nejrozsáhlejší změny ve schématu vyvolalo přidání podpory teselace (tesselation). Jedná se o postup, který umožňuje měnit polygonovou šíť, v Direct3D 11 samozřejmě adaptivně a mnoha způsoby.

Za detailnějšími modely

Teselace není žádnou novinkou, řešila se už hodně dávno a dokonce i pro GPU se začaly vymýšlet postupy, jak mít detailnější modely objektů ve hrách někdy po roce 2000. nVidia měla svoje RT-patches, ATI se dostala dále s N-patches a technologií známou jako Truform (doba GeForce 3 a Radeonu 8500). Adaptivní teselace byla u GPU zkoušena jen o generaci později a první teselační jednotku v hardwaru jste mohli vidět u Radeonu HD 2900 XT (R600).

ATI ji má ve svých čipech dodnes a třeba s Radeony HD 4800 prezentovala své Froblins. Bohužel pro ni však podpora v API přichází až nyní a stejně se jedná o jinak pojaté schéma teselace. Na rozdíl od ATI ji Microsoft zařadil až za vertex shader, kromě teselároru přidal ještě dva další typy shaderů a na otázku ohledně shodnosti s řešením ATI nám Kevin Gee odpověděl, že se jednoznačně jedná o jinou implementaci.

 

Podstatné je, že vývojáři konečně budou mít snadný nástroj, jak vytvářet objekty se složitým reliéfem, všelijaké detailní pohledy na kůži žab či třeba pleť s akné. Microsoft dává pro teselaci opravdu hodně volitelných parametrů, trojúhelníkovou síť lze dále dělit mnoha algoritmy. Hull shader určuje parametry teselace pro teselátor, domain shader se pak postará o správné parametry pro displacement mapu.

GPGPU vs. CUDA

Ještě zajímavější je možná compute shader, tedy GPGPU přímo v API DirectX. Zdá se, že nVidia nechala na svém vizuálním veletrhu promluvit Jidáše, jelikož má svou CUDA a nad ní také PhysX pro fyziku ve hrách. Nutně tomu tak ale být nemusí, jelikož CUDA má velký časový náskok a dost možná je její nejsilnější zbraní v podstatě čisté C, kdežto GPGPU v DirectX bude používat asi nějaký rozšířený HLSL.

Microsoft vytvoří standard, který by měl být podporovaný všemi, nVidia na své straně (a to i u PhysX) asi bude mít už desítky či stovky aplikací (včetně PhysX her) a pravděpodobně taky vyšší uživatelskou přívětivost. Kevin Gee nám k tomu řekl, že očekává použití CUDA tam, kde tvůrce softwaru bude vědět, že se bude používat na jednotném a předem známém hardwaru, kdežto GPGPU DirectX použije ten, kdo bude chtít v produktu mít univerzálnost.

 

Něco pro vývojáře, něco pro každého

Programátoři ocení rozšíření jazyka shaderů vyššího řádu (HLSL) o prvky objektově orientovaných jazyků. Třídy a instance mají být lepším řešením než uber-shader ("one shader to rule them all"), tedy řešení, jež pomocí podmínek postihne všechna možná řešení. Tato rozšíření řeší hlavně narůstající složitost shader kódu dnešních moderních aplikací.

Microsoft modernizoval i formáty komprese textur, BC6 je přímo stavěna pro použití s HDR a i při kompresi 6:1 dává vysokou kvalitu. BC7 je pak zřejmě bezztrátová. Na jednom z posledních slajdů pak vidíte ještě stručný výčet dalších vylepšení v DirectX 11.

Microsoft dá SDK (Software Development Kit) ve své rané betaverzi k dispozici už v listopadu 2008 a budete jej moci zkoušet i na DirectX 10 hardwaru. Nevím vlastně, zda si DX 11 vyžádá vůbec nějaké změny v hardwaru, nebo se jedná jen o redefinici API a jiné využívání unifikovaných shader jednotek. V každém případě se na něj můžete těšit až s vydáním nových Windows, podpora pro něj bude ale doplněna i do Windows Vista.

Průměr: 4.4 (19 hlasů)

Komentáře

Mne sa tak zda, ze nVidia

Mne sa tak zda, ze nVidia robi vsetko preto, aby nemusela vylepsovat architekturu/podporu novsich API. Tesselator mal byt uz v DX10, ale nv ukecala ms aby ju tam nedal, pretoze nv nebola schopna pridat tuto jednotku do cipu. nv a ms su asi velky kamarati..
DX11, aspon v obmedzenej podobe (bez nejakych efektov), bude fungovat na dx10 HW koli konzoliam, pretoze tie (sa mi zda) podporuju aspon ciastocne dx10. tak aby sa mohli vyvyjat nove hry pre konzole, tak musi byt nove api kompatibilne so starym HW.

Re: Mne sa tak zda, ze nVidia

Nevim podle mne to, ze DX11 podporuje HW DX10(10.1) neznamena, ze existujici HW DX10(10.1) poskytuje vse potrebne pro DX11.

Re: Mne sa tak zda, ze nVidia

vsak som napisal, ze asi vsetky efekty nebudu podporovane, ale zaklad na tom behat bude...

Re: Mne sa tak zda, ze nVidia

To co jsi napsal o konzolích je nesmysl. Playstation 3 běží na Linuxu, tam žádné Direct3D není, a na Xboxu 360 je možná něco podobného, ale taky to není D3D jako na Windows. Proto nelze s určitostí říct "Xenos je DX9 čip". 

Re: Mne sa tak zda, ze nVidia

Mozna zaklad spolecny s DX10(10.1). ;-)

Zase se ted vyjasnuje proc asi ATI nekyvla na CUDA/PhysX. Ztrata tvare + ocekavane reseni fyziky v DX11 mohly byt dalsimi argumenty proti.

Re: Mne sa tak zda, ze nVidia

Je otázkou, jestli kývnutí na Havok není pro AMD/ATI mnohem větší ztráta tváře. Archsokovi museli kývnout tak jak tak a ještě nakonec nemají deklarované "Game physics capable" ve spojení s GPU Radeon HD 4800.

Re: Mne sa tak zda, ze nVidia

Ale ATI má HW "Game physics capable", však fyzika by se na jejich gk dala počítat, to že ale nic takového neexistuje už je vedlejší. Já vím, je to slovíčkaření, ale o tom přece marketing je a v tomto případě nelže ;)

Re: Mne sa tak zda, ze nVidia

To by si ale nVidia už při vydání GeForce 8800 GTX mohla napsat do materiálů, že může počítat Folding@home, co je vlastně na tom, že tenkrát pro GeForce neexistoval GPU klient? 

Re: Mne sa tak zda, ze nVidia

To mi připomíná, když si kamarád koupil desku, na jejíž krabici bylo napsáno "HDMI ready". No a ready to bylo, ale konektor tam nebyl.

Re: Mne sa tak zda, ze nVidia

Ani redukce? 

Re: Mne sa tak zda, ze nVidia

ee, na MB byl pouze D-Sub (tedy analog). Jednalo se o nějaký MSI lowend s AMD 690G. Ono by to člověka ani nevytočilo, kdyby ten nápis HDMI ready nebyl přes 1/4 té krabice, snad větší než nápis AMD 690G.

Re: Mne sa tak zda, ze nVidia

A co ten projekt umožňující "NV" fyziku na ATI jak se o něm měsíc či dva zpátky psalo a snad to i fungovalo? Celkem ticho po pěšině... že by někdo típnul nebohého vývojáře :)

Re: Mne sa tak zda, ze nVidia

Začíná to vypadat, že si z nás Regeneration udělal srandu. Momentálně se vymlouvá, že kvůli nějakým korporátním byrokratům musí odložit vydání...

http://www.ngohq.com/graphic-cards/14494-ati-physx-5.html 

BC7

>BC6 je přímo stavěna pro použití s HDR a i při kompresi 6:1 dává vysokou kvalitu.
>BC7 je pak zřejmě bezztrátová.
BC7 je přímo stavěna pro použití s 8-bit LDR a i při kompresi 3:1 dává vysokou kvalitu.

BC7

Podle obrázků BC7 rozhodně bezztrátová není. Je to poznat podle slidů se srovnáním. Prostřední diff obrázek u BC7 není čistý, takže tam je rozdíl.

Re: BC7

jo, to jsem chtel ponekud zmatene naznacit, diky za upresneni

tesselator

No parada, na detailne zpracovane akne uz vsichni dlouho cekame :))

OT: vysvetlil by mi nekdo, jak cist "Se7ven"? to ma byt jako "SeSevenven"? :) Jsem jediny, komu 7cka ani vzdalene nepripomina pismeno "v"? O.o

Re: tesselator

To je jedna možná varianta. Případně to můžeme počeštit na "Windows Sesedumven". Dále by se to dle pravidel 1337-5p34ku mohlo číst jako "Windows Seten". Otočte sedmičku o 180° a máte "Windows Selen". A nebo zcela nelogicky, ale hezky to zní: "Windows Sexen".

Re: tesselator

zamestnanci microsoftu pri prezentacich vyslovuji "Se7en" normalne jako sedmicku - windows seven
mozna se inspirovali filmem "Se7en", ktery se venuje 7 tezkym hrichum (obzerstvi, lenost, ..) http://www.imdb.com/title/tt0114369/
jen si nejsem jist, zda jim inspiraci pri vyberu nazvu bylo zpracovani nebo tema filmu
v prvnim pripade se muzeme tesit na kvalitni system, v druhem pripade by slo o nenazrany, liny system k zlosti

DirectX je mrtvý

Na podobné akci jsem viděl rozsáhlý rozhovor s předním vývojářem her, jedním z autorů Unreal Enginů. Vyjádřil se v tom smyslu, že Direct X je sice skvělé API, ale tak do 5 let ho prý většina vývojářů stejně přestanou zcela používat, protože začnou hojně využívat vlastní přístup k HW. Tak jsem zvědav.

Re: DirectX je mrtvý

To já jsem zvědav taky, protože nevím, jak chtějí přistupovat ke každému HW přímo, když má nVidia, Ati, Intel jinou architekturu.
Ale třeba to jde a ukáže nám to brzo HYDRA 100 (vím, že s tímhle nesouvisí, ale taky bude nějak přistupovat k GPU a musí ho poznat a vědět, co umí a co mu může naložit za práci.)

Re: DirectX je mrtvý

Pravděpodobně to bude tím, že Všichni výrobci vydávájí nízkoúrovňové SDK (jako například CUDA nVidie) pomocí kterých se grafické karty dají programovat přímo. Takže oni možná obejdou nejen DirectX API, ale částečně možná i některé funkce ovladačů (jako třeba optimalizace, aplikační profily a podoně)

Re: DirectX je mrtvý

Právě že CUDA není zrovna nízkoúrovňová. To by spíš bylo CTM, kde můžeš udělat cokoliv, když si to ale taky sám napíšeš. A podívej se, kolik aplikací se vyvíjí pro CUDA a kolik pro CTM :) 

Re: DirectX je mrtvý

Nevíš co hovoříš. Samozřejmě že CUDA je nízkoúrovńová. To že poskytuje i další možnosti na tom přece nic nezmění:

CUDA provides both deterministic low level API and a higher level API.

Re: DirectX je mrtvý

On to myslel dobře, CUDA se zažila jako C kompilátor. Možnost využívat přímo instrukční sadu je "bonus", na který se zapomíná.

Re: DirectX je mrtvý

No právě. A kolik lidí využívá C kompilátor a kolik nízkoúrovňový přístup? 

Re: DirectX je mrtvý

Hrubým odhadem bych řekl, že to bude podobný poměr jako mezi počtem céčkačů a assembleristů ;-)

Mimochodem CUDA jsem ještě nezkoušel, ale to "nízkoúrovňové API" je nejspíš stejně dostupné jen jako inline assembler v C/C++ kódu.

Re: DirectX je mrtvý

pokud instrukcni sadou myslite PTX ISA, tak mozna
ovsem PTX kod je pred odeslanim na konkretni HW dale zpracovan JIT prekladacem (compiler) v CUDA driverech
dokumentace JIT prekladace je dostupna pouze pod NDA

Re: DirectX je mrtvý

Hm, že se to kompiluje dynamicky jsem nevěděl. Ale stejně to na věci nic nemění, ne? C/C++ kód se překládá do intrukcí PTX modelu (high level), ale je možnost instrukce vkládat podobně jako inline assembler (low level).

Samotný PTX model je tam proto, aby výsledný program fungoval na kartách s různými instrukčními sadami.

Jo a příště mi prosím tykej, připadám si pak hrozně staře ;-)

Re: DirectX je mrtvý

prispevek mel byt reakci na cele vlakno (proto ten plural)
jde o to, ze pokud pod "low level" u nVidia CUDA chapeme PTX, tak ATI CTM je jeste o level nize
PTX kod je jako nezavisly na architekture HW dale kompilovan CUDA driverem a nad tim co jde do GPU nemame primou kontrolu (zmena driveru muze mit vliv na vysledny kod)
CTM je svazany s danou architekturou HW a na GPU se posila primo (pro dany HW) zkompilovany kod nezavisly na jakekoliv dalsi sw vrstve

priamy pristup k HW

Nebolo by nelogicke, keby priamy pristup k HW (resp. ku driveru HW) v buducnosti zabezpecoval vyrobca herneho middleware (enginov). Ak sa v(dalekej buducnosti bude standardne pouzivat vylucne jedno dve riesenia, mohli by si dovolit MS DX obist a riesit veci po svojom.

Re: priamy pristup k HW

Nemyslím. Programátoři jsou líná pakáž a rádi si zjednoduší práci. Příklad z minulosti - DirectX vytlačilo nízkoúrovňové Glide. A to byl na herním trhu skoro monopol.