Jaké jsou rozdíly a které byste měli použít?

DirectX 12 bylo vydáno spolu s Windows 10 v roce 2015. S jeho vydáním zahájilo DirectX 12 od Microsoftu novou éru pro hráče a vývojáře her. DirectX 12, který je schopen snížit režii CPU a zároveň zvýšit výkon GPU, si rychle vytvořil jméno.

Je však zvýšení výkonu skutečně tak jednoduché jako přechod z DirectX 11 na DirectX 12? Pojďme to zjistit tím, že se podíváme na rozdíly mezi DirectX 11 a 12.

Co je DirectX společnosti Microsoft?

Jak je vysvětleno v našem přehledu Microsoft DirectX, DirectX je kolekce aplikačních programovacích rozhraní (API) používaných pro zpracování úloh souvisejících s multimédii. To zahrnuje programování her na platformách Microsoft, jako jsou Windows a Xbox. Abychom uvedli nějaký kontext, pojďme stručně mluvit o API.

Rozhraní API umožňuje vzájemnou komunikaci dvou nebo více počítačových programů, o čemž pojednáváme v našem přehledu API. Představte si to jako telefon. Pokud vám vaše máma pošle textovou zprávu se seznamem potravin, váš telefon tato data obdrží a zobrazí vám je. To je v podstatě API.

Jaké jsou rozdíly mezi DirectX 11 a DirectX 12?

Jaké jsou tedy rozdíly mezi DirectX 11 a DirectX 12? Jednoduše řečeno, DirectX 12 je nejnovější verze DirectX. Jedním z nejviditelnějších rozdílů je způsob interakce s vaším hardwarem. Většina her vyvinutých pomocí DirectX 11 využívá pouze dvě až čtyři jádra CPU. Jedno z těchto jader obvykle říká GPU, co má dělat.

Hra pak používá zbývající jádra ke zpracování různých nastavení náročných na CPU, jako jsou částice hry nebo vzdálenost tahu. Na druhou stranu DirectX 12 rozděluje zátěž CPU mezi více jader a umožňuje každému jádru komunikovat s GPU současně.

  Cheat Sheet pro aplikace pro úpravu videa pro váš iPhone

DirectX 12 také přichází s několika efektními zvonky a píšťalkami. To zahrnuje asynchronní výpočty a objekty stavu potrubí (PSO). Asynchronní výpočet zvyšuje využití GPU tím, že umožňuje paralelní práci více úloh. To v podstatě odemkne plný potenciál vašeho GPU.

Kromě vykreslování grafiky váš GPU zvládá celou řadu dalších úkolů, jako je spouštění algoritmů strojového učení. S DirectX 11 může GPU provádět pouze jeden z těchto úkolů najednou a v určitém pořadí. Když k tomu dojde, dojde k výpadku výkonu, protože zdroje GPU nejsou využívány efektivně.

Představte si to jako číšník v restauraci. Když si číšník vezme vaši objednávku, zeptá se vás, co chcete k pití jako první. Jakmile dostanete své nápoje, zeptají se vás, co chcete jako hlavní chod. Vaše objednávka probíhá v krocích. Číšník se vás nezeptá, co si dáte jako dezert, než si dáte hlavní jídlo. I když je to účinné, není to tak účinné, jak by mohlo být.

V oblasti výpočetní techniky by každý z úkolů číšníka zvládl jiný prostředek GPU. Dokud nedostanete svůj nápoj, zdroje GPU potřebné k objednání hlavního chodu budou nečinné. S asynchronním výpočtem DirectX 12 by číšník mohl přijmout vaši objednávku najednou, jako v řetězci rychlého občerstvení. To maximalizuje využití GPU a zlepšuje váš herní výkon.

DirectX 12 také zavedlo objekty stavu potrubí (PSO). S DirectX 11, když je geometrie hry odeslána do GPU k vykreslení, jsou za interpretaci a vykreslení těchto dat zodpovědná různá hardwarová nastavení. Tomu se říká grafický kanál a tok datových vstupů a výstupů, ke kterým dochází, když vaše GPU vykresluje snímky. Grafický kanál DirectX 11 však není dokonalý.

Toto potrubí obsahuje kolekci různých stavů, včetně stavu rastrování, stavu prolnutí a stavu šablony hloubky, mimo jiné. 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 předchozí stav. To snižuje využití GPU a zvyšuje režii CPU na úkor výkonu.

  7 způsobů, jak mohou senioři těžit z nošení Apple Watch

Aby se to obešlo, zavedlo DirectX 12 PSO, objekty, které popisují stav celého grafického potrubí. PSO jsou jako láhev, která obsahuje různé stavy a komponenty potřebné k vytvoření obrazu. To umožňuje GPU předběžně zpracovat každý závislý stav namísto neustálého přepočítávání stavů na základě aktuálního grafického kanálu.

To výrazně snižuje zatížení procesoru v DirectX 11 a zlepšuje výkon. Jak tedy tento rozdíl vypadá? No, podle Microsoftu DirectX 12 snižuje režii CPU až o 50 procent a zlepšuje výkon GPU až o 20 procent. I když se jedná o podstatná vylepšení, neznamená to, že uvidíte stejné výsledky.

Proč není přechod z DirectX 11 na DirectX 12 jednoduchý

DirectX 11 bylo poprvé vydáno pro Windows Vista 27. října 2009. Takže s DirectX 12, které následovalo v roce 2015, je mezi DirectX 11 a DirectX 12 šestiletá mezera. Během této doby byly pomocí DirectX 11 vyvinuty tisíce her. Bohužel přechod z DirectX 11 na DirectX 12 není snadný.

DirectX 11 je to, čemu se říká API na vysoké úrovni. Jednoduše řečeno, s API na vysoké úrovni se vývojářům lépe pracuje. Výsledkem jsou stabilní, leštěné a hratelné hry. Na druhou stranu, DirectX 12 je nízkoúrovňové API a jiné zvíře než DirectX 11. I když umožňuje vývojářům vyladit optimalizaci na granulární úrovni, vyžaduje také rozsáhlé znalosti pro použití.

Jak již bylo řečeno, hra vyvinutá v DirectX 12 by mohla skončit s horším výkonem v závislosti na znalostech vývojáře o API. Některá vylepšení přicházejí s DirectX 12, ale opravdu záleží na tom, jak dobře je vývojář dokáže implementovat. Z tohoto důvodu se mnoho vývojářů rozhodlo držet se API na vysoké úrovni, jako je DirectX 11.

DX 11 vs. DX 12: Co byste si měli vybrat?

Odpověď závisí na několika věcech, například na tom, jakou hru se pokoušíte spustit. Například Guild Wars 2 běží na DirectX 11. I když váš operační systém a hardware mohou používat DirectX 12, nebudete mít možnost vybrat DirectX 11 v Guild Wars 2, protože hra jej nepodporuje. Toto je zcela na rozhodnutí vývojáře, společnosti ArenaNet.

  5 kreativních použití pro inteligentní zásuvky

Kredit snímku: Martin Kerstein/Válka cechů 2

Věřte tomu nebo ne, trvalo devět let, než ArenaNet provedla přechod z DirectX 9 na DirectX 11. Některé hry však podporují DirectX 11 i DirectX 12, včetně Fortnite (přečtěte si náš návod na Fortnite), Battlefield 5, Shadow of Tomb Raider a další. Uživatelé mohou v nastavení hry přepínat mezi DirectX 11 a DirectX 12.

Skutečnost, že některé hry podporují DirectX 11 i 12, vás pravděpodobně přiměla přemýšlet o výkonu ve hře. Přináší výběr DX 11 nebo DX 12 lepší výkon ve hře? Následující video ilustruje rozdíly mezi DirectX 11 a DirectX 12 v řadě her a ukazuje 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řekvapivé, občas s malým vizuálním rozdílem mezi DX 11 a DX 12, navzdory mnohaletým rozdílům mezi jejich uvedením na trh. Možná jste si také všimli rozdílů v zatížení GPU a CPU mezi oběma verzemi DirectX, přičemž verze DX 12 každé hry obvykle vyžadují méně zdrojů než starší DX 11.

Kromě podpory ve hře bude výběr mezi DirectX 11 a DirectX 12 záviset také na vašem hardwaru. Téměř každý moderní GPU bude podporovat DirectX 12, ale totéž nelze říci o starších GPU, jako je Radeon HD 4870. Tento GPU, který byl uveden na trh v roce 2008, podporuje pouze DirectX 10. To znamená, že by nebyl schopen provozovat nejmodernější hry, které běží pomocí DirectX 11 a DirectX 12.

Je pro vás DirectX 12 tou správnou volbou?

Celkově vzato není přechod z DirectX 11 na DirectX 12 tak černobílý, jak to zní. Záleží na řadě faktorů, jako je hardware, software, operační systém a zda hra vůbec podporuje obojí. To vše je třeba před rozhodnutím zvážit a pravděpodobně to bude platit i pro budoucí generace DirectX.