Care sunt diferențele și pe ce ar trebui să utilizați?

DirectX 12 a fost lansat alături de Windows 10 în 2015. Odată cu lansarea sa, DirectX 12 de la Microsoft a inaugurat o nouă eră pentru jucători și dezvoltatorii de jocuri. Capabil să reducă supraîncărcarea CPU, sporind în același timp performanța GPU-ului, DirectX 12 și-a făcut rapid un nume.

Cu toate acestea, creșterea performanței este într-adevăr la fel de simplă ca trecerea de la DirectX 11 la DirectX 12? Să aflăm analizând diferențele dintre DirectX 11 și 12.

Ce este Microsoft DirectX?

După cum este explicat în prezentarea noastră de ansamblu despre Microsoft DirectX, DirectX este o colecție de interfețe de programare a aplicațiilor (API) utilizate pentru gestionarea sarcinilor legate de multimedia. Aceasta include programarea jocurilor pe platforme bazate pe Microsoft precum Windows și Xbox. Pentru a oferi un context, să vorbim pe scurt despre API-uri.

Un API face posibil ca două sau mai multe programe de calculator să comunice între ele, despre care discutăm în prezentarea noastră de ansamblu asupra API-urilor. Gândește-te la asta ca la un telefon. Dacă mama îți trimite un mesaj cu o listă de cumpărături, telefonul tău va primi acele date și ți le va afișa. Acesta este practic un API.

Care sunt diferențele dintre DirectX 11 și DirectX 12?

Deci, care sunt diferențele dintre DirectX 11 și DirectX 12? Mai simplu spus, DirectX 12 este cea mai recentă versiune de DirectX. Una dintre cele mai vizibile diferențe este modul în care interacționează cu hardware-ul tău. Majoritatea jocurilor dezvoltate cu DirectX 11 utilizează doar între două și patru nuclee CPU. Unul dintre aceste nuclee spune de obicei GPU-ului ce trebuie să facă.

Jocul folosește apoi nucleele rămase pentru a gestiona diverse setări intensive de CPU, cum ar fi particulele unui joc sau distanța de desen. Pe de altă parte, DirectX 12 distribuie volumul de lucru al procesorului pe mai multe nuclee și permite fiecărui nucleu să vorbească cu GPU-ul simultan.

  10 instrumente de referință pentru CPU pentru a măsura performanța procesorului [2023]

DirectX 12 vine, de asemenea, cu niște clopote și fluiere fanteziste. Aceasta include calculul asincron și obiectele de stare pipeline (PSO). Calculul asincron crește utilizarea GPU-ului, permițând mai multor sarcini de lucru să funcționeze în paralel. Acest lucru deblochează, în esență, întregul potențial al GPU-ului dvs.

Pe lângă redarea grafică, GPU-ul se ocupă de o gamă largă de alte sarcini, cum ar fi rularea algoritmilor de învățare automată. Cu DirectX 11, GPU-ul poate efectua doar una dintre aceste sarcini la un moment dat și într-o anumită ordine. Performanța este afectată atunci când acest lucru se întâmplă, deoarece resursele dvs. GPU nu sunt utilizate eficient.

Gândește-te la asta ca la un chelner la restaurant. Când un chelner îți preia comanda, te întreabă mai întâi ce vrei să bei. Odată ce îți primești băuturile, ei te întreabă ce vrei pentru felul principal. Comanda dvs. este preluată în pași. Chelnerul nu te va întreba ce ai vrea la desert înainte de a fi servit felul principal. Deși acest lucru este eficient, nu este atât de eficient pe cât ar putea fi.

În calcul, o resursă GPU diferită s-ar ocupa de fiecare dintre sarcinile chelnerului. Până când veți primi băutura, resursele GPU necesare pentru a vă prelua comanda pentru felul principal vor fi inactive. Cu calculul asincron al DirectX 12, chelnerul ar putea să vă preia comanda dintr-o dată, ca într-un lanț de fast-food. Acest lucru maximizează utilizarea GPU-ului și îmbunătățește performanța în joc.

DirectX 12 a introdus și obiecte de stare pipeline (PSO). Cu DirectX 11, atunci când geometria unui joc este trimisă la GPU pentru a fi randată, diferite setări hardware sunt responsabile pentru interpretarea și redarea acestor date. Aceasta se numește conducta grafică și fluxul de intrări și ieșiri de date care apar pe măsură ce GPU-ul dvs. redă cadre. Cu toate acestea, conducta grafică a DirectX 11 nu este perfectă.

Această conductă conține o colecție de stări diferite, inclusiv starea de rasterizare, starea de amestecare și starea șablonului de adâncime, printre alte componente. În DirectX 11, există dependențe între aceste stări diferite. Ca rezultat, o stare nu poate fi finalizată până când nu este definită starea anterioară. Acest lucru scade utilizarea GPU-ului și crește supraîncărcarea CPU cu prețul performanței.

  9 cele mai bune baze de date fără server pentru aplicații moderne

Pentru a ocoli acest lucru, DirectX 12 a introdus PSO-uri, obiecte care descriu starea întregii conducte grafice. PSO-urile sunt ca o sticlă care conține diferitele stări și componente necesare pentru a crea o imagine. Acest lucru permite GPU-ului să preproceseze fiecare stare dependentă în loc să recalculeze continuu stările pe baza conductei grafice curente.

Acest lucru reduce semnificativ supraîncărcarea CPU găsită în DirectX 11 și îmbunătățește performanța. Deci, cum arată această diferență? Ei bine, conform Microsoft, DirectX 12 reduce supraîncărcarea CPU cu până la 50 la sută și îmbunătățește performanța GPU-ului cu până la 20 la sută. Deși acestea sunt niște îmbunătățiri substanțiale, acest lucru nu înseamnă că veți vedea aceleași rezultate.

De ce trecerea de la DirectX 11 la DirectX 12 nu este simplă

DirectX 11 a fost lansat pentru prima dată pentru Windows Vista pe 27 octombrie 2009. Așadar, cu DirectX 12 care urmează în 2015, există un decalaj de șase ani între DirectX 11 și DirectX 12. În acest timp, mii de jocuri au fost dezvoltate folosind DirectX 11. Din păcate, trecerea de la DirectX 11 la DirectX 12 nu este ușor.

DirectX 11 este ceea ce se numește un API de nivel înalt. Mai simplu spus, API-urile de nivel înalt sunt mai ușor de lucrat pentru dezvoltatori. Rezultatul sunt jocuri stabile, lustruite și jucabile. Pe de altă parte, DirectX 12 este un API de nivel scăzut și o bestie diferită de DirectX 11. În timp ce permite dezvoltatorilor să ajusteze optimizarea la nivel granular, necesită, de asemenea, cunoștințe extinse pentru utilizare.

Acestea fiind spuse, un joc dezvoltat în DirectX 12 ar putea avea performanțe mai slabe, în funcție de cunoștințele dezvoltatorului despre API. Unele îmbunătățiri vin cu DirectX 12, dar se rezumă într-adevăr la cât de bine îl poate implementa un dezvoltator. Din acest motiv, mulți dezvoltatori aleg să rămână la API-uri de nivel înalt precum DirectX 11.

DX 11 vs. DX 12: pe care ar trebui să alegi?

Răspunsul depinde de câteva lucruri, cum ar fi ce joc încerci să rulezi. De exemplu, Guild Wars 2 rulează pe DirectX 11. Chiar dacă sistemul de operare și hardware-ul dvs. pot folosi DirectX 12, nu veți avea opțiunea de a selecta DirectX 11 în Guild Wars 2, deoarece jocul nu îl acceptă. Aceasta este în întregime decizia dezvoltatorului, ArenaNet.

  Ce este Microsoft Teams și este potrivit pentru afacerea mea?

Credit imagine: Martin Kerstein/Guild Wars 2

Credeți sau nu, a durat nouă ani pentru ca ArenaNet să facă trecerea de la DirectX 9 la DirectX 11. Cu toate acestea, unele jocuri acceptă atât DirectX 11, cât și DirectX 12, inclusiv Fortnite (citiți fișa noastră de cheat Fortnite), Battlefield 5, Shadow of Tomb Raider și multe altele. Utilizatorii pot comuta între DirectX 11 și DirectX 12 în setările jocului.

Acum, faptul că unele jocuri acceptă atât DirectX 11, cât și 12 probabil te-a făcut să te întrebi despre performanța în joc. Alegerea DX 11 sau DX 12 oferă performanțe mai bune în joc? Următorul videoclip ilustrează diferențele dintre DirectX 11 și DirectX 12 într-o serie de jocuri, prezentând specificații vitale, cum ar fi cadre medii pe secundă, utilizarea procesorului, utilizarea GPU-ului și multe altele, folosind un AMD Ryzen 3600, Nvidia GeForce RTX 3060 Ti și 16 GB RAM DDR4.

Rezultatele sunt surprinzătoare din multe puncte de vedere, cu o mică diferență vizuală uneori între DX 11 și DX 12, în ciuda diferenței de mulți ani dintre lansările lor. Este posibil să fi observat, de asemenea, diferențele de încărcare GPU și CPU între ambele versiuni DirectX, versiunile DX 12 ale fiecărui joc necesitând de obicei mai puține resurse decât DX 11 mai vechi.

Pe lângă suportul în joc, alegerea între DirectX 11 și DirectX 12 va depinde și de hardware-ul dvs. Aproape orice GPU modern va suporta DirectX 12, dar nu același lucru se poate spune despre GPU-urile mai vechi, cum ar fi Radeon HD 4870. Lansat în 2008, acest GPU acceptă doar până la DirectX 10. Aceasta înseamnă că ar fi incapabil să ruleze cele mai moderne. jocuri, care rulează folosind DirectX 11 și DirectX 12.

Este DirectX 12 alegerea potrivită pentru tine?

Una peste alta, trecerea de la DirectX 11 la DirectX 12 nu este atât de alb-negru pe cât pare. Depinde de o varietate de factori, cum ar fi hardware, software, sistemul de operare și dacă un joc le acceptă pe ambele. Toate acestea trebuie luate în considerare înainte de a lua o decizie, iar acest lucru va fi probabil valabil și pentru generațiile viitoare de DirectX.