Úvod:
V létě loňského roku (2008) na GameFestu v Seattlu zástupci Microsoftu oznámili a odprezentovali nové grafické API, které bylo však stále ve vývoji. Další možnosti setkat se s DirectX 11 nastaly na SIGGRAPH 2008 a Nvision 2008. Specifikace DirectX 11 jsou prý už od října 2008 dokončeny/uzavřeny.
DirectX 11 vychází z DirectX 10/10.1 a je jejich rozšířením/nadstavbou. Obsahuje některé nové funkce, ale některé algoritmy a průchody přes pipeline jsou nezměněny. DX11 je zpětně kompatibilní s nižšími verzemi DX API a HW s jejich podporou.
DirectX 11 je zatím podporován dvěma operačnímy systémy (Windows Vista se speciálním addonem a Windows 7) a dvěma GPU ve stádiu vývoje (nVidia G(T)300 a AMD/ATi RV870).
Prezentace a zvukový záznam z prezentace DirectX 11 na GameFestu 2008 je volně ke stažení na stránkách Microsoftu: Introduction to the Direct3D 11 Graphics Pipeline
Nejdůležitější novinky v DirectX 11:
- Shader Model 5.0 - integruje v sobě Pixel shader, Vertex Shader, Geometry shader, Compute shader, Hull shader a Domain shader
- Tessellace - neprogramovatelná tessellační jednotka ( jednotka s fixní funkcí) umožňuje navýšení počtu polygonu modelu v reálném čase s minimálním dopadem na výkon. O vstupní a výstupní data se starají Hull a Domain shader.
- Hull shader - programovatelná jednotka starající se o transformaci vstupních dat zdrojové mřížky modelu pro tessellační jednotku.
- Domain shader - další programovatelná jednotka, která zabezpečuje umístění vertexů (vrcholů) vygenerovaných tessellatorem na odpovídající místo mřížky modelu.
- Compute shader - nový typ shaderu. Využitelný pro GPGPU, akceleraci fyzikálních efektů, akceleraci AI a rendering pokročilých post-processing efektů (A-buffer, pokročilý alpha-blending, raytracing, radiosita atd.)
- Multi-Threading - DirectX 11 je rozdělen na tři stage/levely (Device, Immediate Context and Deferred Context) mezi kterými lze sdílet datové struktury. Dovoluje aplikaci vytvářet zdroje, měnit stav a příkazy pro vykreslování současně.
- Dynamic Shader Linkage - zjednodušení kódu -> usnadnění pro programátory. Dynamické linkování dovoluje aplikaci se rozhodnout při běhu, které shadery budou kompilovány a linkovány.
- BC6 (BC6H), BC7 - nové formáty komprese textur s menší ztrátovostí a vyšším poměrem komprese (možnost využítí na textury s vyšším rozlišením s nižším dopadem na výkon a vyšší výslednou kvalitou výstupu)
Články
Velmi podrobný a obsáhlý rozbor novinek a celé rendering pipeline na AnandTech - Revealing The Power of DirectX 11 (v angličtině)
Také celkem podrobný a "stravitelný" rozbor na Bit-tech.net - DirectX 11: A look at what's coming (v angličtině)
Podobný ale ne tak podrobný článek na Svět Hardware - Svět Hardware: DirectX 11 - seznámení s budoucností (česky)
Přínosy:
- 6-10% nárůst výkonu ve všech případech a 20-30% nárůst výkonu při MSAA oproti DX10 (stejně jako DX10.1)
- kvalitnější Anti-Aliasing
- vyšší kvalita textur
- standardizované GPGPU (s tím související akcelerace fyzikálních efektů atd. - viz. Compute shader)
- detailnější modely postav, vozidel atd. (viz. tessellace)
- pokročilé post-processing efekty
- multi-threading
- zjednodušení kódu (velké plus pro vývojáře)
- velmi dobrá zpětná kompatibilita s DX10, hlavně DX10.1 a s tím související možnost naportování enginů na DX11
BATTLEFIELD: BAD COMPANY 2 (Frostbite Engine - wiki / Developer AMD - PDF)
Novinky na internetu:
DirectX 11 Set to Enable Standardized GPGPU on Existing Hardware
DirectX 11: Battlefield's Frostbite Engine already ported
Vysvětlivky:
- API (Application Programming Interface) - rozhraní pro programování aplikací
- Polygon (Mnohoúhelník) - prvek ze kterého je sestaven 3D model
- Vertex (Vrchol) - základní prvek 3D modelu kterým je definován polygon
- Pipeline - řetězec zpracování, či překrývání instrukcí
- Shader - "počítačový program" určený pro zpracování přímo na grafické kartě. Využívá vlastní programovací jazyk HLSL (High Level Shader Language).
- Multi-Threading - schopnost zpracovávat více úloh současně
- A-Buffer (anti-aliased, area-averaged, accumulation buffer) - udržuje informace vztahující se k viditelnosti průhledných objektů (průhlednost, průsvitnost a protínání objektů). Využívá anti-aliased hidden-surface removal algoritmu z roku 1984
- Alpha-blending - algoritmus, který kombinuje texturu (obrázek) s pozadím pro vytvoření dojmu průhlednosti
- Raytracing (Sledování paprsků) - metoda výpočtu scény sledováním paprsku od jeho zdroje, přes odrazy a lomy až k oku pozorovatele
- Radiosita - metoda globálního osvětlení scény (počítá s odrazy světla od barevné plochy a ziskem jejího "barevného nádechu")
//edit:
3.5.09 - doplněny informace o hull a domain shaderech a vysvětlivky k vertexu