DirectX 12 objavljen je uz Windows 10 2015. Svojim izdanjem, Microsoftov DirectX 12 otvorio je novu eru za igrače i programere igara. Sposoban smanjiti opterećenje CPU-a uz povećanje performansi GPU-a, DirectX 12 brzo je napravio ime za sebe.
Međutim, je li povećanje performansi stvarno tako jednostavno kao prebacivanje s DirectX 11 na DirectX 12? Otkrijmo to tako što ćemo pogledati razlike između DirectX 11 i 12.
Što je Microsoftov DirectX?
Kako je objašnjeno u naš pregled Microsoft DirectX-a, DirectX je skup API-ja koji se koriste za rukovanje zadacima povezanim s multimedijom. To uključuje programiranje igara na Microsoftovim platformama kao što su Windows i Xbox. Da pružimo malo konteksta, razgovarajmo ukratko o API-jima.
Sučelje za programiranje aplikacija (API) omogućuje da dva ili više računalnih programa međusobno komuniciraju, o čemu govorimo u naš pregled API-ja
. Zamislite to kao telefon. Ako vam mama pošalje SMS s popisom namirnica, vaš telefon će primiti te podatke i prikazati vam ih. To je u osnovi API.Koje su razlike između DirectX 11 i DirectX 12?
Dakle, koje su razlike između DirectX 11 i DirectX 12? Jednostavno rečeno, DirectX 12 je najnovija verzija DirectX-a. Jedna od najuočljivijih razlika između to dvoje je način na koji oni komuniciraju s vašim hardverom. Većina igara razvijenih s DirectX 11 koristi samo dva do četiri CPU jezgre. Jedna od tih jezgri obično je posvećena govorenju GPU-u što da radi.
Igra zatim koristi preostale jezgre za rukovanje raznim CPU-intenzivnim postavkama kao što su čestice u igri ili crtanje udaljenosti. S druge strane, DirectX 12 širi radno opterećenje CPU-a na više jezgri i omogućuje svakoj jezgri da komunicira s GPU-om u isto vrijeme.
DirectX 12 također dolazi s nekim otmjenim dodacima. To uključuje asinkrono računalstvo i objekte stanja cjevovoda (PSO). Asinkrono računalstvo povećava iskorištenje GPU-a dopuštajući višestrukim radnim opterećenjima da rade paralelno. Ovo u biti otključava puni potencijal vašeg GPU-a.
Osim za renderiranje grafike, vaš GPU je odgovoran za rukovanje širokim rasponom drugih zadataka, kao što je pokretanje algoritama strojnog učenja. Uz DirectX 11, GPU može obavljati samo jedan od ovih zadataka u isto vrijeme i određenim redoslijedom. Kada se to dogodi, performanse padaju jer se ne koriste svi vaši GPU resursi.
Zamislite to kao konobara u restoranu. Kada konobar prvi put primi vašu narudžbu, pita vas što biste prvo pojeli. Kad dobijete piće, pitaju vas što želite za glavno jelo. Vaša se narudžba obrađuje u koracima. Konobar vas neće pitati što želite za desert prije nego što pojedete glavno jelo. Iako je to učinkovito, nije onoliko učinkovito koliko bi moglo biti.
U računalstvu, svaki zadatak konobara obavljao bi drugačiji GPU resurs. Dok ne primite svoje piće, GPU resursi potrebni za preuzimanje vaše narudžbe glavnog jela bit će u stanju mirovanja. Uz DirectX 12 asinkrono računalstvo, konobar bi mogao preuzeti vašu narudžbu odjednom kao u lancu brze hrane. To maksimalno povećava korištenje GPU-a i poboljšava vaše performanse igranja.
DirectX 12 također je uveo PSO. Uz DirectX 11, kada se geometrija igre pošalje GPU-u na biti prikazan, različite hardverske postavke odgovorne su za tumačenje i renderiranje ovoga podaci. To se naziva grafički cjevovod i tijek je ulaza i izlaza podataka koji se pojavljuju dok vaš GPU renderira okvire. Međutim, DirectX 11 grafički cjevovod nije savršen.
Ovaj cjevovod sadrži zbirku različitih stanja, uključujući stanje rasterizacije, stanje stapanja i stanje šablone dubine, među ostalim komponentama. U DirectX 11 postoje ovisnosti između ovih različitih stanja. Kao rezultat toga, jedno stanje se ne može dovršiti dok se ne definira prethodno stanje. To smanjuje iskorištenost GPU-a i povećava opterećenje CPU-a po cijenu performansi.
Da bi se to zaobišlo, DirectX 12 je uveo PSO, objekte koji opisuju stanje cijelog grafičkog cjevovoda. PSO su poput boce koja sadrži različita stanja i komponente potrebne za stvaranje slike. Ovo omogućuje GPU-u da unaprijed obradi svako ovisno stanje umjesto da mora neprestano ponovno izračunavati stanja na temelju trenutnog grafičkog cjevovoda.
Ovo značajno smanjuje CPU opterećenje koje se nalazi u DirectX 11 i poboljšava performanse. Dakle, kako ta razlika zapravo izgleda? Pa, prema Microsoftu, DirectX 12 smanjuje opterećenje CPU-a do 50 posto i poboljšava performanse GPU-a za čak 20 posto. Iako su to neka značajna poboljšanja, to ne znači da ćete vidjeti iste rezultate.
Zašto prijelaz s DirextX 11 na DirectX 12 nije jednostavan
DirectX 11 je prvi put objavljen za Windows Vista 27. listopada 2009. Dakle, s DirectX 12 koji slijedi 2015., to je šestogodišnji jaz između DirectX 11 i DirectX 12. Tijekom tog vremena razvijene su tisuće igara koristeći DirectX 11. Nažalost, prijelaz s DirectX 11 na DirectX 12 sve je samo ne jednostavan.
DirectX 11 je ono što se zove API visoke razine. Jednostavno rečeno, programerima je lakše raditi s API-jima visoke razine. Rezultat su stabilne, uglađene igre koje se mogu igrati. S druge strane, DirectX 12 je API niske razine i drugačija je zvijer u usporedbi s DirectX 11. Iako programerima omogućuje fino podešavanje optimizacije na granularnoj razini, također zahtijeva opsežno znanje za korištenje.
Uz to, igra razvijena u DirectX 12 mogla bi završiti s lošijim performansama ovisno o poznavanju API-ja programera. Postoje poboljšanja koja dolaze s DirectX 12, ali zapravo se svodi na to koliko ga programer može implementirati. Iz tog razloga, mnogi programeri odlučuju se držati API-ja visoke razine kao što je DirectX 11.
Trebate li odabrati DirectX 11 ili DirectX 12?
Odgovor ovisi o nekoliko stvari, poput igre koju pokušavate pokrenuti. Na primjer, Guild Wars 2 radi na DirectX 11. Čak i ako vaš OS i hardver koriste DirectX 12, nećete imati opciju odabrati DirectX 11 u Guild Wars 2 jer ga igra ne podržava. Ovo je u potpunosti odluka developera, ArenaNeta.
Vjerovali ili ne, ArenaNetu je trebalo devet godina da se prebaci s DirectX 9 na DirectX 11. Međutim, postoje neke igre koje podržavaju i DirectX 11 i DirectX 12. Fortnite (čitaj naš Fortnite varalica), na primjer. Putem postavki igre korisnici se mogu prebacivati između obje verzije. Ukratko, ne podržava svaka igra DirectX 11 i DirectX 12. Za one koji to rade, prebacite se između ta dva i sami odredite koji ima bolje rezultate na vašem računalu.
Možete li birati između DirectX 11 i DirectX 12 također će ovisiti o vašem hardveru. Gotovo svaki moderni GPU podržava DirectX 12, ali isto se ne može reći za starije GPU-e poput Radeon HD 4870. Izdan 2008., ovaj GPU podržava samo DirectX 10. To znači da ne bi mogao pokrenuti većinu modernih igara, koje rade pomoću DirectX 11 i DirectX 12.
Je li DirectX 12 pravi izbor za vas?
Sve u svemu, prebacivanje s DirectX 11 na DirectX 12 nije tako crno-bijelo kao što zvuči. Ovisi o nizu čimbenika kao što su hardver, softver, operativni sustav i podržava li igra uopće oboje. Sve ovo treba razmotriti prije donošenja odluke, a to će vjerojatno vrijediti i za buduće generacije DirectX-a.