DirectX 12 blev udgivet sammen med Windows 10 i 2015. Med udgivelsen indledte Microsofts DirectX 12 en ny æra for spillere og spiludviklere. DirectX 12, der er i stand til at reducere CPU-overhead, samtidig med at den øger GPU-ydeevnen, skabte sig selv et navn.
Men er det virkelig så simpelt at øge din ydeevne som at skifte fra DirectX 11 til DirectX 12? Lad os finde ud af det ved at se på forskellene mellem DirectX 11 og 12.
Hvad er Microsofts DirectX?
Som forklaret i vores oversigt over Microsoft DirectX, DirectX er en samling af API'er, der bruges til at håndtere opgaver relateret til multimedie. Dette inkluderer spilprogrammering på Microsoft-baserede platforme som Windows og Xbox. For at give lidt kontekst, lad os kort tale om API'er.
En applikationsprogrammeringsgrænseflade (API) gør det muligt for to eller flere computerprogrammer at kommunikere med hinanden, hvilket vi diskuterer i
vores oversigt over API'er. Tænk på det som en telefon. Hvis din mor sender dig en sms med en indkøbsliste, modtager din telefon disse data og viser dem for dig. Det er dybest set en API.Hvad er forskellene mellem DirectX 11 og DirectX 12?
Så hvad er forskellene mellem DirectX 11 og DirectX 12? Kort sagt, DirectX 12 er den seneste version af DirectX. En af de mest mærkbare forskelle mellem de to er, hvordan de interagerer med din hardware. De fleste spil udviklet med DirectX 11 bruger kun mellem to og fire CPU-kerner. En af disse kerner er normalt dedikeret til at fortælle GPU'en, hvad den skal gøre.
Spillet bruger derefter de resterende kerner til at håndtere forskellige CPU-intensive indstillinger som et spils partikler eller trækafstand. På den anden side spreder DirectX 12 en CPU's arbejdsbyrde på tværs af flere kerner og tillader også hver kerne at tale med GPU'en på samme tid.
DirectX 12 kommer også med nogle smarte klokker og fløjter. Dette inkluderer asynkron computing og pipeline state objects (PSO'er). Asynkron computing øger GPU-udnyttelsen ved at tillade flere arbejdsbelastninger at arbejde parallelt. Dette låser i bund og grund op for din GPU's fulde potentiale.
Bortset fra grafikgengivelse er din GPU ansvarlig for at håndtere en lang række andre opgaver, såsom at køre maskinlæringsalgoritmer. Med DirectX 11 kan GPU'en kun udføre en af disse opgaver ad gangen og i en bestemt rækkefølge. Når dette sker, får ydeevnen et slag, fordi alle dine GPU-ressourcer ikke bliver brugt.
Tænk på det som en tjener på en restaurant. Når en tjener først tager imod din ordre, spørger de dig, hvad du vil drikke først. Når du har modtaget dine drikkevarer, spørger de dig, hvad du gerne vil have til hovedretten. Din ordre tages i trin. Tjeneren vil ikke spørge dig, hvad du vil have til dessert, før du har fået din hovedret. Selvom dette er effektivt, er det ikke så effektivt, som det kunne være.
Inden for databehandling vil hver af tjenerens opgaver blive håndteret af en anden GPU-ressource. Indtil du modtager din drink, vil de nødvendige GPU-ressourcer til at tage din hovedretsbestilling være inaktive. Med DirectX 12's asynkrone databehandling ville tjeneren være i stand til at tage imod din ordre på én gang som i en fastfood-kæde. Dette maksimerer GPU-brug og forbedrer din spilydelse.
DirectX 12 introducerede også PSO'er. Med DirectX 11, når et spils geometri sendes til GPU'en til gengives, er en række hardwareindstillinger ansvarlige for fortolkning og gengivelse af dette data. Dette kaldes den grafiske pipeline og er strømmen af datainput og -output, der opstår, når din GPU gengiver frames. DirectX 11's grafikpipeline er dog ikke perfekt.
Denne pipeline indeholder en samling af forskellige tilstande, herunder rasteriseringstilstand, blandingstilstand og dybdestenciltilstand, blandt andre komponenter. I DirectX 11 er der afhængigheder mellem disse forskellige tilstande. Som et resultat kan en tilstand ikke fuldføres, før den tidligere tilstand er defineret. Dette reducerer GPU-udnyttelsen og øger CPU-omkostningerne på bekostning af ydeevnen.
For at komme uden om dette introducerede DirectX 12 PSO'er, som er objekter, der beskriver tilstanden af hele grafikpipelinen. PSO'er er som en flaske, der indeholder de forskellige tilstande og komponenter, der er nødvendige for at skabe et billede. Dette gør det muligt for GPU'en at forbehandle enhver afhængig tilstand i stedet for løbende at skulle genberegne tilstande baseret på den aktuelle grafikpipeline.
Dette reducerer den CPU-overhead, der findes i DirectX 11 markant, og forbedrer ydeevnen. Så hvordan ser denne forskel egentlig ud? Nå, ifølge Microsoft reducerer DirectX 12 CPU-overhead med op til 50 procent og forbedrer GPU-ydeevnen med så meget som 20 procent. Selvom det er nogle væsentlige forbedringer, betyder det ikke, at du vil se de samme resultater.
Hvorfor det ikke er ligetil at skifte fra DirextX 11 til DirectX 12
DirectX 11 blev først udgivet til Windows Vista den 27. oktober 2009. Så med DirectX 12, der følger i 2015, er det en seksårig afstand mellem DirectX 11 og DirectX 12. I løbet af denne tid er tusindvis af spil blevet udviklet ved hjælp af DirectX 11. Desværre er overgangen fra DirectX 11 til DirectX 12 alt andet end let.
DirectX 11 er det, der kaldes en API på højt niveau. For at sige det enkelt er API'er på højt niveau nemmere for udviklere at arbejde med. Resultatet er stabile, polerede og spilbare spil. På den anden side er DirectX 12 et lavt niveau API og er et anderledes bæst sammenlignet med DirectX 11. Selvom det giver udviklere mulighed for at finjustere optimering på et granulært niveau, kræver det også omfattende viden at bruge.
Når det er sagt, kan et spil udviklet i DirectX 12 ende med dårligere ydeevne afhængigt af udviklerens viden om API'et. Der er forbedringer, der følger med DirectX 12, men det kommer virkelig ned på, hvor godt en udvikler kan implementere det. Af denne grund vælger mange udviklere at holde sig til API'er på højt niveau som DirectX 11.
Skal du vælge DirectX 11 eller DirectX 12?
Svaret afhænger af et par ting, f.eks. hvilket spil du prøver at køre. For eksempel kører Guild Wars 2 på DirectX 11. Selvom dit OS og hardware bruger DirectX 12, vil du ikke have mulighed for at vælge DirectX 11 i Guild Wars 2, fordi spillet ikke understøtter det. Dette er udelukkende udvikleren, ArenaNets beslutning.
Tro det eller ej, men det tog ni år for ArenaNet at skifte fra DirectX 9 til DirectX 11. Der er dog nogle spil, der understøtter både DirectX 11 og DirectX 12. Fortnite (læs vores Fortnite snydeark), for eksempel. Gennem spillets indstillinger kan brugerne skifte mellem begge versioner. For at opsummere, understøtter ikke alle spil både DirectX 11 og DirectX 12. For dem, der gør det, skal du skifte mellem de to og selv bestemme, hvilken der fungerer bedst på din pc.
Om du kan vælge mellem DirectX 11 og DirectX 12 vil også afhænge af din hardware. Næsten enhver moderne GPU vil understøtte DirectX 12, men det samme kan ikke siges om ældre GPU'er som Radeon HD 4870. Udgivet i 2008, denne GPU understøtter kun op til DirectX 10. Dette betyder, at det ville være ude af stand til at køre de fleste moderne spil, som kører med DirectX 11 og DirectX 12.
Er DirectX 12 det rigtige valg for dig?
Alt i alt er skift fra DirectX 11 til DirectX 12 ikke så sort og hvidt, som det lyder. Det afhænger af en række faktorer såsom hardware, software, operativsystem, og om et spil overhovedet understøtter begge dele. Alle disse skal overvejes, før der træffes en beslutning, og dette vil sandsynligvis også være sandt for fremtidige generationer af DirectX.