Hlavní navigace

DirectX 12 Ultimate: Přichází nová generace herní grafiky. Co přináší a jaká GPU ji umí?

20. 3. 2020

Sdílet

Během nyní končící druhé dekády 21. století jsme si celkem odvykli na něco, co bylo běžné po 10–15 předcházejících let: GPU se rychle vyvíjela a každých pár let se objevila nová verze DirectX. Na těch bylo podstatné, že vždy přinášely nové funkce GPU jako Hardware T&L, programovatelné shadery a poté jejich evoluci po několik generací. Tyto novinky vždy potřebovaly nové GPU, takže když se například DirectX 9.0 dostalo do her, nutilo to k upgradu z grafik generace DX8.1. Během aktuální dekády ale prakticky pořád GPU zůstávala na hardwaru na úrovni DirectX 11, nové DirectX 12 (a Vulkan) s nimi byly kompatibilní. Ovšem nyní ke konci dekády přichází návrat oněch velkých změn v hardwarové výbavě GPU: Microsoft vypouští novou generaci či úroveň DirectX, která opět přináší potřebu upgradovat grafické karty. Nicméně ne úplně pro všechny, protože první vlna GPU s podporou už na trhu je ve formě GPU Turing.

DirectX 12 Ultimate

Tato nová verze se jmenuje DirectX 12 Ultimate, i když by možná bylo lepší označit ji novým číslem verze, třeba 12.5. Technicky vzato jde o rozšíření DirectX 12, pod označení DirectX 12 sdružil Microsoft novinky, které se od vydání DirectX 12 v architekturách GPU objevily (interně se hardwarová podpora u GPU označuje jako Feature Level 12_2). Nyní budou zastřešené pod přehledné označení DirectX 12 Ultimate.

Microsoft uvádí, že díky integraci nových funkcí do API DiretX 12 budou nové hry používající tyto „Ultimate“ funkce běžet normálně i na běžných DirectX 12 kartách, rozdíl bude jen v tom, že nebudou benefitovat na zlepšeních kvality obrazu. V tomto tedy nepůjde o takový předěl jako například mezi DirectX 10 a 11 nebo verzemi 8.1 a 9, kde byla API nekompatibilní.

Dobrá zpráva pro vlastníky grafik Nvidia Turing je, že nové funkce, které DirectX 12 obsahuje, už umí tato 12nm GPU použitá v kartách GeForce RTX 2000 – zdá se, že specifikace neobsahuje věci, které by se do těchto GPU ještě nedostaly, takže jsou takto zpětně povýšeny na novou (polo)generaci DirectX. Respektive, týká se to modelů GeForce RTX 2000, ale už ne levnějších Turingů GeForce GTX 1600, těm nálepka DirectX 12 Ultimate unikla kvůli absenci následujícího bodu.

DXR 1.1

Asi nejdůležitější věcí, kterou DirectX 12 Ultimate takto standardizuje, je podpora pro ray tracing, respektive jeho hardwarová akcelerace (například na RT jádrech Turingu). Microsoft před dvěma lety ray tracing uvedl jako rozšíření DXR (DirectX Raytracing) a do DirectX 12 Ultimate je povinně zahrnutá aktualizovaná verze DXR 1.1, která přidává některá zlepšení, například možnost, aby výpočet RT v nějakém efektu inicializovalo samo GPU bez zapojení CPU (GPU Work Creation).

DirectX 12 Ultimate DXR11 DXR 1.1 v DirectX 12 Ultimate (Zdroj: Nvidia)

Další novinka je Inline ray tracing, což je režim práce s ray tracingem, kdy vývojář má vyšší kontrolu (jde tedy o více nízkoúrovňový styl programování oproti standardnímu režimu ray tracingu přes dynamické shadery). GPU Turing podporují kromě původního DXR 1.0 už i tato rozšíření a DXR 1.1.

Variable rate shading

Další dvě novinky se týkají už i her bez ray tracingových efektů. Jde v prvé řadě o technologii Variable rate shading, která umožňuje snížit podle okolností kvalitu provádění shaderů v určité oblasti obrazu. Věnovali jsme se jí v článku o architektuře GPU Turing (zde) a pak loni, když ji MS zahrnul do DirectX 12 jako rozšíření.

Tip: Variable Rate Shading v DirectX 12: podrobnosti

Variable rate shading znamená, že místo na každý pixel je určitý efekt počítaný shadery aplikovaný jenom třeba na blok 2×2 nebo ještě více pixelů, čímž se uspoří výkon. Tato redukovaná kvalita se aplikuje s granularitou po obdélníkových blocích, na které hra obraz rozdělí. Příležitost pro využití tohoto triku je třeba, pokud je v obraze nějaká uniformní plocha či třeba objekt v dálce, toto se označuje jako Context Adaptive Shading.

Jiná možnost je použít redukované rozlišení pro shadery na objekty, které se rychle hýbají a lidské oko je tedy stejně neregistruje tak podrobně, abyste si redukce kvality v pohybu všimli (jiné by to ovšem mohlo být na screenshotu). Toto se označuje Motion Adaptive Shading, obojí je ovšem aplikace stejné hardwarové funkce.

Variable rate shading dokáže měnit kvalitu shaderů po jednotlivých blocích obrazu

Galerie: Variable Rate Shading v DirectX 12

Podle Nvidie se typicky touto cestou dá získat z GPU nějakých 5–10 % výkonu navíc. Zisky ale samozřejmě závisí na tom, jak agresivně bude šetření výkonem shaderů ve hře nasazováno a kolik příležitostí k němu styl hraní (u Motion Adaptive Shadingu) poskytne. Jako vždy platí, že úspora výkonu se dá vytěžit i ke zvýšení kvality, pokud vývojář uspořený výpočetní čas zase utratí na další shaderové efekty v jiné části obrazu.

Turing umí Variable rate shading pod označením Adaptive shading, a to i v případě GeForce GTX 1600. Kromě toho už má podporu také GPU architektura Gen11 v 10nm procesorech Ice LakeLakefield od Intelu, které ovšem neumí další součásti DirectX 12 Ultimate jako DXR.

Mesh Shaders

DirectX 12 dále standardizuje Mesh Shading či Mesh Shadery. Tato technologie se týká výpočtu geometrie scény – tedy „drátěných“ modelů/polygonů a trojúhelníků ještě před tím, než nastoupí texturování a pixel shading. GPU už dlouho mají vertex shadery, geometry shadery a další, ale Mesh Shader jde mnohem dál v zobecnění a programovatelnosti, přináší například explicitní paralelismus, který byl dříve schovaný za abstrakcí. Nvidia charakterizuje Mesh Shader tak, že jde o plně programovatelné zpracování geometrie, zatímco předchozí přístupy byly dejme tomu „poloprogramovatelné“.

Mesh Shader 1 Mesh Shader

Použití Mesh Shaderů bude poměrně zásadním zásahem do enginů her, který bude asi vyžadovat poměrně velké úsilí, takže se může šířit pomaleji. Nicméně tato technika by měla být výrazně efektivnější a zřejmě by měla umožnit dosáhnout vyšších výkonů a současně snad také snížit zátěž CPU (které funguje jako úzké hrdlo výkonu).

Nvidia DirectX 12 Ultimate Mesh shaders Mesh shaders v DirectX 12 Ultimate, demo Nvidie (Zdroj: Nvidia)

Součástí je také volitelný Amplification Shader, který umožňuje poměrně jemné odstranění části primitiv z dalších výpočtů ještě před tím, než běží samotné Mesh Shadery. Jeho použití by mělo lépe fungovat s okleštěním zbytečných trojúhelníků na objektech, jejíchž část je viditelná, ale část ne.

Amplification Shader Amplification Shader

Sampler Feedback

Čtvrtou novinkou začleněnou v DirectX 12 Ultimate je technologie Sampler Feedback, která se týká práce s texturami, zejména jejich načítáním. Jde o zpětnou vazbu mezi vykreslováním a správou dat hry, díky které program má lepší informace o tom, které textury hra skutečně využívá a potřebuje.

Nvidia DirectX 12 Ultimate Sampler Feedback Sampler Feedback v DirectX 12 Ultimate (Zdroj: Nvidia)

Toto by mělo umožnit lepší využití grafické paměti, protože nebude nutné tolik různých dat mít v RAM neustále „pro jistotu“, ale část jich bude moci být ponechána v úložišti, odkud je lze rychle načíst (máte-li SSD…). Tato inteligentnější kontrola nad využitím grafické paměti bude znamenat, že pro aktuálně potřebné textury bude mít GPU více prostoru a tím efektivně vyšší kapacitu. Tím pádem bude hra moci operovat s více texturami (či kvalitnějšími), než bez ní.

Texture-Space Shading

Pod technologií Sampler Feedback je zahrnutá ještě jedna šikovná novinka, Texture-Space Shading, ve které jde o něco jiného. Spočívá v umožnění toho, aby GPU provedlo operace pixel shaderů ne na konkrétní už rasterizovaný objekt scény, ale do textury, které se pak ponechá v paměti pro další využití. Toto může potenciálně ušetřit hodně výkonu, pokud si hra inteligentně předkreslí do takovéto textury určitý polotovar, která pak může využít mnohonásobně při kreslení konkrétních objektů, aniž by se třeba složitější shadery musely pořád opakovat.

Princip Texture Space Shading Princip Texture Space Shadingu

Pokud vás zajímají podrobnější informace o těchto technikách, má k nim Microsoft podrobnější články:

Podpora: GeForce RTX 2000, nové konzole, Radeony s RDNA 2

Už jsme nakousli, že GPU Turing ve verzi GeForce RTX 2000 už jsou na DirectX 12 Ultimate plně připravené. Nvidia potvrdila, že všechny funkce popsané výše jsou implementované a budou aktivované v ovladačích v době, kdy vyjde aktualizace Windows 10 přinášející podporu DirectX 12 Ultimate.

Mělo by jít o verzi 2004, jenž přinese DXR 1.1, Mesh Shader a Sampler Feedback a tím i celé DX12 Ultimate. Pro vývojáře by měly být vývojové ovladače dostupné přes program Windows Insider. Tyto funkce Nvidia vyvíjela spolu s Microsoftem už před oznámením, což umožnilo takto software s hardwarem sladit.

Nvidia DirectX 12 Ultimate podpora Turing Nvidia oznamuje podporu DirectX 12 Ultimate v grafikách Turing

Turing (a jeho následníci) ale nebude samozřejmě jediná možnost, jak DirectX 12 Ultimate využít. Microsoft ve vývoji spolupracoval i s AMD, které má tyto funkce integrované do grafické architektury RDNA 2. Zde to bylo zřejmě sladěné s vývojem konzole Xbox Series X; ta je z pohledu Microsoftu důležitou částí ekosystému a tohoto oznámení. Tato nová konzole má plně podporovat všechno v DirectX 12 Ultimate a spolu s grafickými kartami pro PC tak tento systém bude poskytovat jednotný cíl pro vývojáře, kteří budou moci stejné funkce použít na této konzoli i platformě PC. Pravděpodobně by podobné hardwarové funkce měla mít i PlayStation 5, u které ale jako programovací vrstva nebude DirectX použité.

Tip: Microsoft vyložil karty. O Xboxu Series X už víme (skoro) vše

Tip: PlayStation 5 bude pomalejší než Xbox Series X. Má však jiné přednosti

DirectX 12 Ultimate DXR11 na GPU architekture AMD RDNA2 DirectX 12 Ultimate s podporou DXR 1.1 na GPU architektuře AMD RDNA 2

Stejně jako Xbox Series X bude funkce DirectX 12 podporovat i architektura RDNA 2 v samostatných grafikách AMD Radeon, které by měly vyjít v druhé polovině letošního roku. I zde by to měla být plná podpora všech z předchozích položek, včetně hardwarová akcelerace ray tracingu DXR 1.1, podporu Variable rate shadingu, což už bylo známo. Podle tohoto navíc Radeony RDNA 2 (Navi 2x) budou umět i Mesh shadery/Amplification shadery a Sampler Feedback (a shading do textury).

Tip: RDNA 2 přinese hardwarový ray tracing a adaptivní shading. Asi až koncem roku

DirectX 12 Ultimate kompatibilních grafik je už mezi lidmi přes 15 milionů

Jak široce a rychle se budu DirectX 12 Ultimate ve hrách prosazovat, to samozřejmě teprve uvidíme. Některé nové verze DirectX byly vývojáři přijímány dost pomalu, což v minulosti působilo proti nutnosti grafiky upgradovat. Rozšíření DirectX 12 Ultimate by teď měly pomáhat právě nové herní konzole, které technologii bude pomáhat, ale i aktivita Nvidie, která ray tracingové efekty od roku 2018 propaguje a podporuje mezi vývojáři her.

WT100

Nvidia GeForce RTX 2000 15 milionu Nvidia uvádí, že grafiku GeForce RTX 2000 s podporou DirectX 12 Ultimate už má přes 15 milionů hráčů (Zdroj: Nvidia)

Je sice pravda, že vývojáři stále musí počítat s tím, že patřičné grafické karty vlastní nyní jen zlomek uživatelů (Nvidia uvádí, že zatím prodala přes 15 milionů grafik GeForce RTX 2000), ale toto číslo bude pořád růst. Spolu s přispěním konzolí a eventuálně Radeonů Navi 2x by se tedy měla motivace vývojářů k použití těchto pokročilých efektů zvyšovat.

Zdroje: Microsoft, Nvidia, AMD

Galerie: DirectX 12 Ultimate