Jaké jsou rozdíly a které byste měli použít?
DirectX 12, představený současně s Windows 10 v roce 2015, znamenal pro hráče a vývojáře her počátek nové etapy. Tento nový standard od Microsoftu se rychle prosadil díky schopnosti snižovat nároky na CPU a zároveň zvyšovat výkon grafických karet.
Ovšem je nárůst výkonu skutečně tak jednoduchý, jako pouhý přechod z DirectX 11 na DirectX 12? Pojďme se společně podívat na klíčové rozdíly mezi těmito dvěma verzemi a zjistit, jak to doopravdy je.
Co je vlastně Microsoft DirectX?
Jak jsme vysvětlili v našem přehledu o Microsoft DirectX, jedná se o sadu aplikačních programovacích rozhraní (API), která slouží ke zpracování úloh souvisejících s multimédii. To zahrnuje i programování her pro platformy od Microsoftu, jako jsou Windows a Xbox. Pro lepší kontext si stručně vysvětlíme, co API vlastně je.
API umožňuje komunikaci mezi dvěma nebo více počítačovými programy, což jsme také rozebírali v našem přehledu o API. Představte si to třeba jako telefon. Když vám maminka pošle SMS se seznamem potravin, váš telefon tato data přijme a zobrazí vám je. A to je v podstatě funkce API.
Jaké jsou tedy rozdíly mezi DirectX 11 a DirectX 12?
Stručně řečeno, DirectX 12 je nejnovější verze DirectX. Jedním z nejvýraznějších rozdílů je způsob, jakým pracují s vaším hardwarem. Většina her vyvinutých s použitím DirectX 11 využívala pouze dvě až čtyři jádra procesoru. Jedno z těchto jader obvykle dává instrukce grafické kartě.
Zbytek jader pak hra využívala k zpracování různých výpočetně náročných prvků, jako jsou herní částice nebo dohlednost. Na druhou stranu, DirectX 12 rozkládá zátěž CPU mezi více jader, a umožňuje tak každému jádru komunikovat s grafickou kartou současně.
DirectX 12 navíc přináší řadu dalších vylepšení. Zahrnují asynchronní výpočty a objekty stavu kanálu (PSO). Asynchronní výpočty zvyšují využití grafické karty tím, že umožňují paralelní zpracování více úloh. Tímto způsobem se otevírá plný potenciál vašeho GPU.
Kromě vykreslování grafiky, GPU zvládá řadu dalších úkolů, jako je spouštění algoritmů strojového učení. U DirectX 11 může GPU vykonávat pouze jednu z těchto úloh najednou a v určitém pořadí. To způsobuje pokles výkonu, protože zdroje grafické karty nejsou efektivně využívány.
Představte si to jako číšníka v restauraci. Když si číšník přijde k vašemu stolu, nejdříve se zeptá na pití. Jakmile vám přinese pití, zeptá se na hlavní jídlo. Objednávka tedy postupuje v krocích. Číšník se vás nebude ptát na dezert, dokud nemáte objednané hlavní jídlo. I když je to funkční, není to úplně optimální.
V oblasti výpočetní techniky by každý z těchto úkolů číšníka zpracovával jiný zdroj grafické karty. Dokud tedy nedostanete nápoj, zdroje potřebné pro objednání hlavního jídla budou nečinné. S asynchronním výpočtem v DirectX 12 by číšník mohl přijmout celou objednávku najednou, podobně jako v rychlém občerstvení. To maximalizuje využití GPU a zvyšuje herní výkon.
DirectX 12 také představil objekty stavu kanálu (PSO). U DirectX 11, když je geometrie hry poslána do GPU k vykreslení, různá hardwarová nastavení jsou zodpovědná za interpretaci a vykreslení těchto dat. Tomu se říká grafický kanál a tok datových vstupů a výstupů, ke kterému dochází, když GPU vykresluje snímky. Grafický kanál v DirectX 11 však není dokonalý.
Tento kanál obsahuje sadu různých stavů, včetně stavu rasterizace, stavu prolnutí a stavu šablony hloubky. V DirectX 11 existují závislosti mezi těmito různými stavy. Výsledkem je, že jeden stav nemůže být dokončen, dokud není definován stav předchozí. Tím se snižuje využití GPU a zvyšuje se zátěž CPU, což negativně ovlivňuje výkon.
Aby se tomu předešlo, DirectX 12 zavedl PSO, což jsou objekty, které popisují stav celého grafického kanálu. PSO jsou jako láhev, která obsahuje různé stavy a komponenty potřebné k vytvoření obrazu. To umožňuje GPU předem zpracovat každý závislý stav, namísto neustálého přepočítávání stavů podle aktuálního grafického kanálu.
Toto výrazně snižuje zátěž procesoru, kterou způsobuje DirectX 11 a zlepšuje výkon. Jak tedy tento rozdíl vypadá v praxi? Podle Microsoftu DirectX 12 snižuje režii CPU až o 50 procent a zvyšuje výkon GPU až o 20 procent. I když se jedná o významná vylepšení, neznamená to, že uvidíte stejné výsledky.
Proč není přechod z DirectX 11 na DirectX 12 tak jednoduchý?
DirectX 11 bylo poprvé vydáno pro Windows Vista 27. října 2009. Mezi vydáním DirectX 11 a DirectX 12, které následovalo v roce 2015, je tedy rozdíl šesti let. Během této doby byly vyvinuty tisíce her s využitím DirectX 11. Bohužel přechod z DirectX 11 na DirectX 12 není jednoduchý.
DirectX 11 je to, co se označuje jako API vyšší úrovně. Jednoduše řečeno, vývojáři s API vyšší úrovně pracují mnohem snáze. Výsledkem jsou stabilní, vyladěné a hratelné hry. Na druhou stranu, DirectX 12 je API nižší úrovně, které se od DirectX 11 značně liší. I když vývojářům umožňuje detailní optimalizaci, vyžaduje také hluboké znalosti.
Hra vyvinutá v DirectX 12 by tedy mohla mít horší výkon, pokud vývojář API dostatečně neovládá. DirectX 12 přináší určitá vylepšení, ale hodně záleží na tom, jak dobře je vývojář dokáže implementovat. Proto se mnoho vývojářů rozhodlo držet se API vyšší úrovně, jako je DirectX 11.
DX 11 vs. DX 12: Co si tedy vybrat?
Odpověď závisí na několika faktorech, například na tom, kterou hru chcete spustit. Například Guild Wars 2 běží na DirectX 11. I když váš operační systém a hardware podporují DirectX 12, v Guild Wars 2 si DirectX 12 nezvolíte, protože hra jej nepodporuje. Je to zcela na rozhodnutí vývojáře, společnosti ArenaNet.
Kredit snímku: Martin Kerstein/Guild Wars 2
Věřte tomu nebo ne, ArenaNetu trvalo devět let, než provedla přechod z DirectX 9 na DirectX 11. Některé hry však podporují jak DirectX 11, tak i DirectX 12, například Fortnite (podívejte se na náš návod na Fortnite), Battlefield 5, Shadow of Tomb Raider a další. Uživatelé si pak mohou v nastavení hry přepínat mezi DirectX 11 a DirectX 12.
Skutečnost, že některé hry podporují obě verze DirectX, vás asi nutí přemýšlet o herním výkonu. Znamená volba DX 11 nebo DX 12 lepší výkon ve hře? Následující video ukazuje rozdíly mezi DirectX 11 a DirectX 12 v různých hrách a porovnává důležité specifikace, jako je průměrný počet snímků za sekundu, využití CPU, využití GPU a další, s použitím AMD Ryzen 3600, Nvidia GeForce RTX 3060 Ti a 16GB DDR4 RAM.
Výsledky jsou v mnoha ohledech překvapující, občas se mezi DX 11 a DX 12 vyskytují jen malé vizuální rozdíly, a to i přes několik let mezi jejich uvedením na trh. Můžete si také všimnout rozdílů v zatížení GPU a CPU mezi oběma verzemi DirectX, přičemž verze DX 12 obvykle vyžadují méně zdrojů než starší DX 11.
Kromě podpory ve hře bude volba mezi DirectX 11 a DirectX 12 záviset také na vašem hardwaru. Téměř každá moderní grafická karta podporuje DirectX 12, ale to samé se nedá říct o starších GPU, jako je například Radeon HD 4870. Tato karta, která byla uvedena na trh v roce 2008, podporuje pouze DirectX 10. To znamená, že by nebyla schopna spustit nejnovější hry, které běží na DirectX 11 a DirectX 12.
Je pro vás DirectX 12 ta správná volba?
Celkově vzato, přechod z DirectX 11 na DirectX 12 není tak jednoznačný, jak by se mohlo zdát. Záleží na mnoha faktorech, jako je hardware, software, operační systém a zda hra vůbec podporuje obě verze. To vše je potřeba zvážit před rozhodnutím a pravděpodobně tomu tak bude i u budoucích verzí DirectX.