„DirectX 12“ buvo išleistas kartu su „Windows 10“ 2015 m. Išleistas „Microsoft DirectX 12“ žaidėjams ir žaidimų kūrėjams pradėjo naują erą. „DirectX 12“, galinti sumažinti procesoriaus sąnaudas ir padidinti GPU našumą, greitai išgarsėjo.
Tačiau ar padidinti našumą tikrai taip paprasta, kaip pereiti nuo „DirectX 11“ į „DirectX 12“? Išsiaiškinkime, kuo skiriasi „DirectX 11“ ir „12“.
Kas yra „Microsoft“ „DirectX“?
Kaip paaiškinta mūsų „Microsoft DirectX“ apžvalga, „DirectX“ yra API rinkinys, naudojamas su daugialypės terpės užduotimis tvarkyti. Tai apima žaidimų programavimą tokiose „Microsoft“ platformose kaip „Windows“ ir „Xbox“. Norėdami pateikti šiek tiek konteksto, trumpai pakalbėkime apie API.
Taikomųjų programų sąsaja (API) suteikia galimybę dviem ar daugiau kompiuterių programų bendrauti tarpusavyje, apie ką mes aptariame mūsų API apžvalga
. Pagalvokite apie tai kaip apie telefoną. Jei mama atsiųs jums tekstinį pranešimą su bakalėjos prekių sąrašu, jūsų telefonas gaus tuos duomenis ir parodys juos už jus. Iš esmės tai yra API.Kokie yra „DirectX 11“ ir „DirectX 12“ skirtumai?
Taigi, kokie yra „DirectX 11“ ir „DirectX 12“ skirtumai? Paprasčiau tariant, „DirectX 12“ yra naujausia „DirectX“ versija. Vienas iš labiausiai pastebimų skirtumų tarp šių dviejų yra tai, kaip jie sąveikauja su jūsų aparatine įranga. Dauguma žaidimų, sukurtų naudojant „DirectX 11“, naudojami tik nuo dviejų iki keturių CPU branduoliai. Vienas iš šių branduolių paprastai yra skirtas nurodyti GPU, ką daryti.
Tada žaidimas naudoja likusius branduolius įvairiems procesoriaus reikalaujantiems nustatymams, pvz., žaidimo dalelėms ar atstumui nubrėžti. Kita vertus, „DirectX 12“ paskirsto procesoriaus darbo krūvį keliuose branduoliuose ir leidžia kiekvienam branduoliui tuo pačiu metu bendrauti su GPU.
„DirectX 12“ taip pat yra su įmantriais varpeliais ir švilpukais. Tai apima asinchroninį skaičiavimą ir konvejerinės būsenos objektus (PSO). Asinchroninis skaičiavimas padidina GPU panaudojimą leisdamas keliems darbo krūviams dirbti lygiagrečiai. Tai iš esmės atskleidžia visą jūsų GPU potencialą.
Be grafikos atvaizdavimo, jūsų GPU yra atsakingas už daugybę kitų užduočių, pvz., mašininio mokymosi algoritmų vykdymą. Naudodamas „DirectX 11“, GPU gali atlikti tik vieną iš šių užduočių vienu metu ir tam tikra tvarka. Kai taip nutinka, našumas nukenčia, nes nenaudojami visi GPU ištekliai.
Pagalvokite apie tai kaip apie padavėją restorane. Kai padavėjas pirmą kartą priima jūsų užsakymą, jis klausia, ko pirmiausia norėtumėte išgerti. Kai tik gausite gėrimus, jie jūsų paklaus, ko norėtumėte pagrindiniam patiekalui. Jūsų užsakymas vykdomas etapais. Padavėjas neketina jūsų paklausti, ko norėtumėte deserto, kol nepavalgėte pagrindinio patiekalo. Nors tai yra veiksminga, ji nėra tokia efektyvi, kaip galėtų būti.
Skaičiuojant kiekvieną padavėjo užduotį atliktų skirtingas GPU išteklius. Kol negausite gėrimo, pagrindinio patiekalo užsakymui reikalingi GPU ištekliai bus nenaudojami. Naudodamas „DirectX 12“ asinchroninį skaičiavimą, padavėjas galėtų priimti jūsų užsakymą iš karto kaip greito maisto grandinėje. Tai maksimaliai padidina GPU naudojimą ir pagerina jūsų žaidimų našumą.
„DirectX 12“ taip pat pristatė PSO. Naudojant „DirectX 11“, kai žaidimo geometrija pateikiama GPU gali būti pateikta, įvairūs aparatūros nustatymai yra atsakingi už tai interpretavimą ir atvaizdavimą duomenis. Tai vadinama grafikos dujotiekiu ir yra duomenų įvesties ir išvesties srautas, atsirandantis, kai GPU pateikia kadrus. Tačiau „DirectX 11“ grafikos vamzdynas nėra tobulas.
Šiame dujotiekyje, be kitų komponentų, yra įvairių būsenų rinkinys, įskaitant rastravimo būseną, maišymo būseną ir trafareto gylio būseną. „DirectX 11“ yra priklausomybės tarp šių skirtingų būsenų. Dėl to viena būsena negali būti užbaigta, kol neapibrėžiama ankstesnė būsena. Tai sumažina GPU naudojimą ir padidina procesoriaus sąnaudas našumo kaina.
Norėdami tai apeiti, „DirectX 12“ pristatė PSO, kurie yra objektai, apibūdinantys viso grafikos vamzdyno būseną. VIAP yra tarsi butelis, kuriame yra įvairios būsenos ir komponentai, reikalingi įvaizdžiui sukurti. Tai leidžia GPU iš anksto apdoroti kiekvieną priklausomą būseną, o ne nuolat perskaičiuoti būsenas pagal dabartinį grafikos vamzdyną.
Tai žymiai sumažina „DirectX 11“ procesoriaus sąnaudas ir pagerina našumą. Taigi, kaip iš tikrųjų atrodo šis skirtumas? Na, „Microsoft“ teigimu, „DirectX 12“ sumažina procesoriaus sąnaudas iki 50 procentų ir pagerina GPU našumą net 20 procentų. Nors tai yra keletas esminių patobulinimų, tai nereiškia, kad pamatysite tuos pačius rezultatus.
Kodėl perjungti iš DirextX 11 į DirectX 12 nėra paprasta
„DirectX 11“ pirmą kartą buvo išleista „Windows Vista“ 2009 m. spalio 27 d. Taigi, 2015 m. pasirodžius „DirectX 12“, tai yra šešerių metų skirtumas tarp „DirectX 11“ ir „DirectX 12“. Per tą laiką tūkstančiai žaidimų buvo sukurta naudojant „DirectX 11“. Deja, pereiti nuo „DirectX 11“ prie „DirectX 12“ nėra lengva.
„DirectX 11“ yra tai, kas vadinama aukšto lygio API. Paprasčiau tariant, kūrėjams lengviau dirbti su aukšto lygio API. Rezultatas yra stabilūs, poliruoti ir žaidžiami žaidimai. Kita vertus, „DirectX 12“ yra žemo lygio API ir yra kitoks žvėris, palyginti su „DirectX 11“. Nors tai leidžia kūrėjams tiksliai suderinti optimizavimą smulkiu lygiu, taip pat reikia daug žinių, kad būtų galima naudoti.
Atsižvelgiant į tai, „DirectX 12“ sukurtas žaidimas gali būti prastesnis, atsižvelgiant į kūrėjo žinias apie API. „DirectX 12“ yra patobulinimų, tačiau tai iš tikrųjų priklauso nuo to, kaip kūrėjas gali tai įgyvendinti. Dėl šios priežasties daugelis kūrėjų pasirenka aukšto lygio API, pvz., „DirectX 11“.
Ar turėtumėte pasirinkti „DirectX 11“ ar „DirectX 12“?
Atsakymas priklauso nuo kelių dalykų, pvz., kokio žaidimo bandote paleisti. Pavyzdžiui, „Guild Wars 2“ veikia „DirectX 11“. Net jei jūsų OS ir aparatinė įranga naudoja „DirectX 12“, „Guild Wars 2“ neturėsite galimybės pasirinkti „DirectX 11“, nes žaidimas jos nepalaiko. Tai visiškai kūrėjo „ArenaNet“ sprendimas.
Tikėkite ar ne, prireikė devynerių metų, kol „ArenaNet“ perėjo iš „DirectX 9“ į „DirectX 11“. Tačiau yra keletas žaidimų, kurie palaiko ir „DirectX 11“, ir „DirectX 12“. Fortnite (skaitykite mūsų Fortnite sukčiavimo lapas), pavyzdžiui. Naudodami žaidimo nustatymus vartotojai gali perjungti abi versijas. Apibendrinant galima pasakyti, kad ne kiekvienas žaidimas palaiko „DirectX 11“ ir „DirectX 12“. Tiems, kurie tai daro, perjunkite tarp dviejų ir patys nuspręskite, kuris jūsų kompiuteryje veikia geriau.
Tai, ar galėsite pasirinkti „DirectX 11“ ir „DirectX 12“, taip pat priklausys nuo jūsų aparatinės įrangos. Beveik bet kuris modernus GPU palaikys „DirectX 12“, tačiau to negalima pasakyti apie senesnius GPU, tokius kaip „Radeon HD 4870“. Šis GPU, išleistas 2008 m., palaiko tik iki „DirectX 10“. Tai reiškia, kad jis negalėtų paleisti daugumos šiuolaikinių žaidimų, kurie veikia naudojant „DirectX 11“ ir „DirectX 12“.
Ar „DirectX 12“ yra tinkamas pasirinkimas?
Apskritai, perėjimas nuo „DirectX 11“ prie „DirectX 12“ nėra toks juodas ir baltas, kaip atrodo. Tai priklauso nuo įvairių veiksnių, pvz., aparatinės įrangos, programinės įrangos, operacinės sistemos ir nuo to, ar žaidimas apskritai palaiko abu. Į visa tai reikia atsižvelgti prieš priimant sprendimą, ir tai greičiausiai bus teisinga ir būsimoms „DirectX“ kartoms.