DirectX 12 je predstavljen zajedno sa operativnim sistemom Windows 10, davne 2015. godine. Njegovim lansiranjem, Microsoftov DirectX 12 je započeo novo razdoblje kako za gejmere, tako i za programere video igara. Sposoban da umanji opterećenje centralnog procesora (CPU) uz istovremeno poboljšanje performansi grafičkog procesora (GPU), DirectX 12 je brzo stekao popularnost.
Međutim, da li je poboljšanje performansi zaista tako jednostavno kao prelazak sa DirectX 11 na DirectX 12? Razmotrimo razlike između verzija 11 i 12 da bismo to utvrdili.
Šta je Microsoftov DirectX?
Kao što je objašnjeno u našem pregledu Microsoft DirectXa, DirectX je skup programskih interfejsa (API) koji se koriste za obradu multimedijalnih zadataka. To uključuje razvoj igara na platformama koje se zasnivaju na Microsoftovim tehnologijama, poput Windowsa i Xboxa. Da bismo dali malo konteksta, kratko ćemo razmotriti šta su API-ji.
API omogućava komunikaciju između dva ili više računarskih programa, o čemu više govorimo u našem pregledu API-ja. Zamislite ga kao telefon. Kada vam mama pošalje poruku sa spiskom za kupovinu, vaš telefon prima te informacije i prikazuje vam ih. To je u suštini funkcija API-ja.
Koje su razlike između DirectX 11 i DirectX 12?
Dakle, koje su ključne razlike između DirectX 11 i DirectX 12? Jednostavno rečeno, DirectX 12 je novija verzija. Jedna od najuočljivijih razlika leži u načinu na koji komuniciraju sa vašim hardverom. Većina igara razvijenih sa DirectX 11 koristi samo dva do četiri jezgra CPU-a. Jedno od ovih jezgara je zaduženo za instrukcije koje se šalju GPU-u.
Preostala jezgra se koriste za upravljanje različitim aspektima igre koji zahtevaju CPU, poput simulacije čestica ili kontrole dometa vidljivosti. Sa druge strane, DirectX 12 raspoređuje opterećenje CPU-a na više jezgara, dozvoljavajući svakom jezgru da istovremeno komunicira sa GPU-om.
DirectX 12 dolazi sa nizom naprednih funkcija, uključujući asinhrono računanje i objekte stanja cevovoda (PSO). Asinhrono računanje poboljšava iskorišćenje GPU-a omogućavajući paralelno izvršavanje više zadataka. To u suštini oslobađa pun potencijal vašeg GPU-a.
Pored grafičkog prikaza, vaš GPU obavlja i druge zadatke, poput izvršavanja algoritama mašinskog učenja. Sa DirectX 11, GPU je mogao da izvršava samo jedan zadatak u datom trenutku i u određenom redosledu. Performanse se smanjuju jer se resursi GPU-a ne koriste efikasno.
Zamislite to kao konobara u restoranu. Kada konobar primi vašu porudžbinu, prvo pita za piće. Nakon što dobijete piće, pita za glavno jelo. Vaša porudžbina se obrađuje u koracima. Konobar neće pitati za desert pre nego što pojedete glavno jelo. Iako je ovo efikasno, nije optimalno.
U računarskom kontekstu, različiti GPU resursi bi bili zaduženi za svaki od zadataka konobara. Sve dok ne dobijete piće, resursi GPU-a koji su potrebni za obradu narudžbine glavnog jela će biti neaktivni. Sa asinhronim računanjem DirectX 12, konobar bi mogao odjednom da primi celu vašu porudžbinu, slično kao u lancima brze hrane. Ovo maksimizuje upotrebu GPU-a i poboljšava performanse igara.
DirectX 12 je takođe uveo objekte stanja cevovoda (PSO). Kada se geometrija igre prosledi GPU-u radi renderovanja sa DirectX 11, različita podešavanja hardvera se koriste za tumačenje i prikazivanje tih podataka. Ovo se naziva grafički cevovod i predstavlja tok podataka koji se javlja dok GPU renderuje frejmove. Međutim, grafički cevovod DirectX 11 nije savršen.
Ovaj cevovod sadrži različita stanja, uključujući stanje rasterizacije, mešanja i stanje dubine, između ostalih komponenti. U DirectX 11, postoji zavisnost između tih različitih stanja. Kao rezultat toga, jedno stanje ne može biti završeno dok se prethodno ne definiše. Ovo smanjuje iskorišćenost GPU-a i povećava opterećenje CPU-a, na štetu performansi.
Da bi se to prevazišlo, DirectX 12 je uveo PSO, objekte koji opisuju celokupno stanje grafičkog cevovoda. PSO su kao boce koje sadrže različita stanja i komponente neophodne za kreiranje slike. Ovo omogućava GPU-u da unapred obradi svako zavisno stanje, umesto da stalno preračunava stanja na osnovu trenutnog grafičkog cevovoda.
Ovo značajno smanjuje opterećenje CPU-a koje je prisutno u DirectX 11 i poboljšava performanse. Dakle, kakva je razlika? Prema Microsoftu, DirectX 12 smanjuje opterećenje CPU-a do 50 procenata i poboljšava performanse GPU-a do 20 procenata. Iako su ovo značajna poboljšanja, to ne znači da ćete vi uvek videti iste rezultate.
Zašto prelazak sa DirectX 11 na DirectX 12 nije jednostavan
DirectX 11 je prvi put objavljen za Windows Vista 27. oktobra 2009. godine. S obzirom da je DirectX 12 usledio 2015. godine, postoji razmak od šest godina između verzija 11 i 12. Za to vreme, hiljade igara je razvijeno koristeći DirectX 11. Nažalost, prelazak sa DirectX 11 na DirectX 12 nije nimalo lak.
DirectX 11 je ono što se naziva API visokog nivoa. Pojednostavljeno, programerima je lakše raditi sa API-jima visokog nivoa. Rezultat su stabilne, glatke igre koje su spremne za igranje. Sa druge strane, DirectX 12 je API niskog nivoa i potpuno drugačiji u odnosu na DirectX 11. Iako omogućava programerima da precizno podese optimizaciju na vrlo detaljnom nivou, zahteva i opsežno znanje da bi se iskoristio.
Imajući to na umu, igra razvijena u DirectX 12 može imati lošije performanse, u zavisnosti od znanja programera o API-ju. Određena poboljšanja dolaze sa DirectX 12, ali se svodi na to koliko dobro programer može da ih implementira. Iz tog razloga, mnogi programeri se odlučuju da se drže API-ja visokog nivoa, poput DirectX 11.
DX 11 naspram DX 12: Šta izabrati?
Odgovor zavisi od nekoliko faktora, uključujući i igru koju pokušavate da pokrenete. Na primer, Guild Wars 2 radi na DirectX 11. Čak i ako vaš operativni sistem i hardver podržavaju DirectX 12, nećete imati mogućnost da izaberete DirectX 11 u Guild Wars 2, jer igra ne podržava ovu opciju. Ovo je u potpunosti odluka programera, ArenaNet.
Autor slike: Martin Kerstein/Guild Wars 2
Verovali ili ne, ArenaNetu je trebalo devet godina da pređe sa DirectX 9 na DirectX 11. Međutim, neke igre podržavaju i DirectX 11 i DirectX 12, uključujući Fortnite, Battlefield 5, Shadow of Tomb Raider i mnoge druge. Korisnici mogu birati između DirectX 11 i DirectX 12 u podešavanjima igre.
Činjenica da neke igre podržavaju i DirectX 11 i 12, verovatno vas je navela da se zapitate o performansama u igri. Da li odabir DX 11 ili DX 12 dovodi do boljih performansi? Sledeći video ilustruje razlike između DirectX 11 i DirectX 12 u nizu igara, prikazujući vitalne specifikacije poput prosečnog broja frejmova u sekundi, iskorišćenosti CPU-a i GPU-a, korišćenjem AMD Ryzen 3600, Nvidia GeForce RTX 3060 Ti i 16 GB DDR4 RAM-a.
Rezultati su iznenađujući na mnogo načina, sa malim vizuelnim razlikama između DX 11 i DX 12, uprkos višegodišnjoj razlici između njihovih lansiranja. Možda ste primetili i razlike u opterećenju GPU-a i CPU-a između obe verzije DirectX-a, pri čemu DX 12 verzije svake igre obično zahtevaju manje resursa nego starije DX 11.
Pored podrške u igri, izbor između DirectX 11 i DirectX 12 zavisiće i od vašeg hardvera. Gotovo svaki moderan GPU će podržavati DirectX 12, ali isto se ne može reći za starije GPU-ove, poput Radeon HD 4870. Izdat 2008. godine, ovaj GPU podržava samo do DirectX 10. To znači da ne bi mogao da pokreće većinu modernih igara, koje koriste DirectX 11 i DirectX 12.
Da li je DirectX 12 pravi izbor za vas?
Sve u svemu, prelazak sa DirectX 11 na DirectX 12 nije toliko jednostavan kao što se čini. Zavisi od niza faktora, poput hardvera, softvera, operativnog sistema i da li igra uopšte podržava obe verzije. Sve to treba uzeti u obzir pre donošenja odluke, a to će verovatno važiti i za buduće generacije DirectXa.