DirectX 12 bol vydaný spolu so systémom Windows 10 v roku 2015. Microsoft DirectX 12 svojim vydaním otvoril novú éru pre hráčov a vývojárov hier. DirectX 12, ktorý je schopný znížiť réžiu procesora a zároveň zvýšiť výkon GPU, si rýchlo urobil meno.
Je však zvýšenie výkonu skutočne také jednoduché ako prechod z DirectX 11 na DirectX 12? Poďme to zistiť pohľadom na rozdiely medzi DirectX 11 a 12.
Čo je DirectX od spoločnosti Microsoft?
Ako je vysvetlené v náš prehľad Microsoft DirectXDirectX je kolekcia rozhraní API používaných na spracovanie úloh súvisiacich s multimédiami. To zahŕňa programovanie hier na platformách založených na spoločnosti Microsoft, ako sú Windows a Xbox. Aby sme poskytli nejaký kontext, povedzme si stručne o API.
Aplikačné programové rozhranie (API) umožňuje dvom alebo viacerým počítačovým programom vzájomnú komunikáciu, o ktorej hovoríme
náš prehľad API. Predstavte si to ako telefón. Ak vám vaša mama pošle textovú správu so zoznamom potravín, váš telefón tieto údaje prijme a zobrazí vám ich. To je v podstate API.Aké sú rozdiely medzi DirectX 11 a DirectX 12?
Aké sú teda rozdiely medzi DirectX 11 a DirectX 12? Zjednodušene povedané, DirectX 12 je najnovšia verzia DirectX. Jedným z najvýraznejších rozdielov medzi nimi je spôsob, akým interagujú s vaším hardvérom. Väčšina hier vyvinutých pomocou DirectX 11 využíva iba dva až štyri CPU jadrá. Jedno z týchto jadier je zvyčajne určené na to, aby povedalo GPU, čo má robiť.
Hra potom používa zostávajúce jadrá na spracovanie rôznych nastavení náročných na CPU, ako sú častice hry alebo vzdialenosť ťahu. Na druhej strane, DirectX 12 rozdeľuje záťaž CPU na viacero jadier a tiež umožňuje každému jadru komunikovať s GPU súčasne.
DirectX 12 tiež prichádza s niekoľkými efektnými zvončekmi a píšťalkami. To zahŕňa asynchrónne výpočty a objekty stavu potrubia (PSO). Asynchrónne výpočty zvyšujú využitie GPU tým, že umožňujú paralelnú prácu viacerých pracovných zaťažení. To v podstate odomkne plný potenciál vášho GPU.
Okrem vykresľovania grafiky je váš GPU zodpovedný za spracovanie širokej škály ďalších úloh, ako je napríklad spúšťanie algoritmov strojového učenia. S DirectX 11 môže GPU vykonávať iba jednu z týchto úloh naraz a v určitom poradí. Keď k tomu dôjde, dôjde k výpadku výkonu, pretože sa nevyužívajú všetky vaše zdroje GPU.
Predstavte si to ako čašník v reštaurácii. Keď čašník prvýkrát prijme vašu objednávku, spýta sa vás, čo by ste chceli piť ako prvé. Keď dostanete svoje nápoje, spýtajú sa vás, čo by ste si dali ako hlavný chod. Vaša objednávka prebieha v krokoch. Čašník sa vás nebude pýtať, čo by ste si dali ako dezert, kým si dáte hlavný chod. Aj keď je to účinné, nie je to také účinné, ako by mohlo byť.
Vo výpočtovej technike by každú úlohu čašníka vykonával iný zdroj GPU. Kým nedostanete svoj nápoj, zdroje GPU potrebné na objednanie hlavného jedla budú nečinné. S asynchrónnym výpočtom DirectX 12 by čašník mohol prijať vašu objednávku naraz ako v reťazci rýchleho občerstvenia. To maximalizuje využitie GPU a zlepšuje váš herný výkon.
DirectX 12 tiež predstavilo funkcie PSO. S DirectX 11, keď je geometria hry odoslaná do GPU pri vykreslení sú za interpretáciu a vykreslenie zodpovedné rôzne nastavenia hardvéru údajov. Toto sa označuje ako grafický kanál a ide o tok dátových vstupov a výstupov, ku ktorým dochádza, keď váš GPU vykresľuje snímky. Grafický kanál DirectX 11 však nie je dokonalý.
Tento kanál obsahuje kolekciu rôznych stavov vrátane stavu rastrovania, stavu prelínania a stavu šablóny hĺbky, medzi inými komponentmi. V DirectX 11 existujú závislosti medzi týmito rôznymi stavmi. Výsledkom je, že jeden stav nemožno dokončiť, kým nie je definovaný predchádzajúci stav. To znižuje využitie GPU a zvyšuje réžiu CPU na úkor výkonu.
Aby sme to obišli, DirectX 12 zaviedlo PSO, čo sú objekty, ktoré popisujú stav celého grafického potrubia. PSO sú ako fľaša, ktorá obsahuje rôzne stavy a komponenty potrebné na vytvorenie obrazu. To umožňuje GPU predbežne spracovať každý závislý stav namiesto toho, aby musel neustále prepočítavať stavy na základe aktuálneho grafického potrubia.
To výrazne znižuje réžiu procesora v DirectX 11 a zlepšuje výkon. Ako teda tento rozdiel v skutočnosti vyzerá? Podľa Microsoftu DirectX 12 znižuje réžiu procesora až o 50 percent a zlepšuje výkon GPU až o 20 percent. Aj keď ide o niekoľko podstatných vylepšení, neznamená to, že uvidíte rovnaké výsledky.
Prečo prechod z DirextX 11 na DirectX 12 nie je jednoduchý
DirectX 11 bol prvýkrát vydaný pre Windows Vista 27. októbra 2009. Takže s DirectX 12, ktoré nasledovalo v roku 2015, je to šesťročný rozdiel medzi DirectX 11 a DirectX 12. Počas tejto doby boli pomocou DirectX 11 vyvinuté tisíce hier. Bohužiaľ, prechod z DirectX 11 na DirectX 12 nie je jednoduchý.
DirectX 11 je to, čo sa nazýva API na vysokej úrovni. Zjednodušene povedané, s API na vysokej úrovni sa vývojárom ľahšie pracuje. Výsledkom sú stabilné, leštené a hrateľné hry. Na druhej strane, DirectX 12 je nízkoúrovňové API a v porovnaní s DirectX 11 je to iné zviera. Aj keď umožňuje vývojárom doladiť optimalizáciu na granulárnej úrovni, vyžaduje si aj rozsiahle znalosti na použitie.
Ako už bolo povedané, hra vyvinutá v DirectX 12 môže skončiť s horším výkonom v závislosti od znalosti API vývojára. DirectX 12 prináša vylepšenia, ale záleží na tom, ako dobre ho vývojár dokáže implementovať. Z tohto dôvodu sa veľa vývojárov rozhodlo držať sa vysokoúrovňových rozhraní API, ako je DirectX 11.
Mali by ste si vybrať DirectX 11 alebo DirectX 12?
Odpoveď závisí od niekoľkých vecí, napríklad akú hru sa pokúšate spustiť. Napríklad Guild Wars 2 beží na DirectX 11. Aj keď váš operačný systém a hardvér používajú DirectX 12, v Guild Wars 2 nebudete mať možnosť vybrať DirectX 11, pretože hra ho nepodporuje. Toto je výlučne rozhodnutie vývojára, spoločnosti ArenaNet.
Verte tomu alebo nie, trvalo deväť rokov, kým ArenaNet prešla z DirectX 9 na DirectX 11. Existujú však hry, ktoré podporujú DirectX 11 aj DirectX 12. Fortnite (čítaj náš Fortnite cheat sheet), napríklad. Prostredníctvom nastavení hry môžu používatelia prepínať medzi oboma verziami. Aby som to zhrnul, nie každá hra podporuje DirectX 11 aj DirectX 12. Pre tých, ktorí áno, prepínajte medzi týmito dvoma a sami určte, ktorý z nich funguje lepšie na vašom počítači.
Či si môžete vybrať medzi DirectX 11 a DirectX 12, bude závisieť aj od vášho hardvéru. Takmer každý moderný GPU bude podporovať DirectX 12, ale to isté sa nedá povedať o starších GPU, ako je Radeon HD 4870. Tento GPU vydaný v roku 2008 podporuje iba DirectX 10. To znamená, že by nebol schopný spustiť väčšinu moderných hier, ktoré bežia pomocou DirectX 11 a DirectX 12.
Je DirectX 12 pre vás tou správnou voľbou?
Celkovo vzaté, prechod z DirectX 11 na DirectX 12 nie je taký čiernobiely, ako to znie. Závisí to od rôznych faktorov, ako je hardvér, softvér, operačný systém a či hra vôbec podporuje oboje. Toto všetko je potrebné zvážiť pred prijatím rozhodnutia a pravdepodobne to bude platiť aj pre budúce generácie DirectX.