Hopp til navigasjon Hopp til innhold
Vulkan-spillene har allerede begynt å komme; her The Talos Principle.

Dypdykk: Dette bør du vite om den nye grafikkplattformen «Vulkan»

Spill: Det har aldri vært bedre å elske spill.

Games Developer Conference knyttes 2016 knyttes det stor spenning til hvor mange som kommer til båsen til Khronos Group som nettopp har lansert Vulkan, et spill-API som er etterfølgeren til 25 år gamle OpenGL.

Les alle våre Dypdykk-artikler.

Endelig en OpenGL-oppfølger
I likhet med OpenGL er en grafikk-API som fungerer på tvers av alle plattformer (uten, kanskje, Apple) – fra Windows til Linux og Android samt alle andre som ønsker å støtte den.

Det kan bety bedre utvikling av spill på tvers av plattformer, og bedre spillytelse i lang tid fremover, ettersom Vulkan vel er en direkte konkurrent til DirectX 12, bare at den fungerer på flere plattformer.

Dypdykk: DirectX 12 – derfor blir spill-maskinen din mye fete.

Alt som kan krype og gå i bransjen er med i Khronos Group.
Alt som kan krype og gå i bransjen er med i Khronos Group.

Basert på Mantle
Vulkan ble lansert med brask og bram 18. februar i år, etter atten måneder med intens videreutvikling basert på Mantle av industrigruppen Khronos – som består av alt som kan krype og gå av maskin- og programvareprodusenter, fra Apple til Nvidia til Qualcomm, Samsung og Intel, for å nevne noen.

Akkurat Apple er det imidlertid et spørsmålstegn over, ettersom de er med i Khronos «Board of promoters», men har trukket seg fra utviklingen av Vulkan for i stedet å fokusere på sitt eget grafikk-API Metal. Så helt kryss-plattform er det ikke sikkert at Vulkan blir. Det som imidlertid er klart er at Vulkan vil være til stede over alt ellers.

Vulkan er mye bedre på multitasking enn OpenGL, men dette må gjøres i programmet/spillet i stedet for gjennom driveren.
Vulkan er mye bedre på multitasking enn OpenGL, men dette må gjøres i programmet/spillet i stedet for gjennom driveren.

Derfor er Vulkan spesielt
Så hva er det som er så spesielt med Vulkan? Vel, Vulkan er designet fra bunnen opp til å være kryssplattform, slik at den vil fungere på alt fa mobiler til tablets til spillkonsoller (tenk Steam Machines til å begynne med) og vanlige PCer.

Vulkan lover også enklere driverutvikling og mer kontroll over maskinvaren, som ligner litt på det man kan gjøre med DirectX 12, som for eksempel å direkte programmere minnebruken i stedet for å la driverne gjøre denne jobben.

Vulkan ble bygget på restene av Mantle, som ble donert av AMD, og inkluderer mange av fordelene derfra, i tillegg til at APIen nå er multiplattform og mer fleksibel.

Vulkan har tatt med ting som bedre støtte for flerkjerneprosessorer og vil øke GPU-bruken mens CPU-bruken blir redusert. I likhet med DirectX 12 og Async Shaders har også Vulkan støtte for parallelle grafikkortinstruksjoner, som gjør ting litt raskere.

Sjekk ut denne demo-en fra Intel som viser at Vulkan bruker mindre CPU og mere GPU:

Liten driverkjerne
Det som først og fremst er nytt i Vulkan er at selve driveren er liten og lett, i motsetning til OpenGL der driverne tok seg av feilrapportering og minnekontroll – samt shader-kompilering.

I Vulkan er dette annerledes, ettersom det er programmet selv som lager kommandebufferne (og dermed kan bruke flere tråder på dette) og minneadministrasjonen, samt at debugging bare blir lastet inn når det er nødvendig.

I motsetning til OpenGL lar Vulkan programmet gjøre mesteparten av jobben, og holder driverne små og lette.
I motsetning til OpenGL lar Vulkan programmet gjøre mesteparten av jobben, og holder driverne små og lette.

Bygget for flerkjerneprosessorer
I tillegg bruker driverne (og API-et) bare ett språk — nemlig SPIR-V. Dette er imidlertid en sannhet med modifikasjoner, ettersom det er mulig å programmere i det gode gamle GLSL-språket som brukes med OpenGL for så å få det oversatt til SPIR-V av APIen, som gjør det enkelt å porte kode fra OpenGL – tilsynelatende.

Den største forskjellen er imidlertid at OpenGL er over tyve år gammelt, og kommer fra en tid der kommandoer ble gitt i en enkelt tråd — mens Vulkan er bygget fra bunnen av til å kjøre på flerkjerneprosessorer.

Det er mange andre «problemer» med OpenGL som rett og slett har med bagasje fra en lang alderdom å gjøre, som blir kastet ut av vinduet med Vulkan som startet på nytt med blanke ark og fargestifter.

Langt bedre ytelse
Markedsføringen av Vulkan er for tiden mest rettet mot utviklere som tidligere brukte OpenGL, med hovedtrykket på mulighetene for langt bedre ytelse og mye bedre kontroll over grafikkbrikken – til prisen av litt mer utviklingstid.

For å vise nøyaktig hvor mye bedre ytelse man kan vente seg har Imagination Technoloies kjørt en Vulkan-demo gjennom en firekjernet Intel-prosessor med en PowerVR-grafikkbrikke med OpenGL ES 3.0 som referanse:

Det er tydelig at spesielt mobilmarkedet kommer til å dra svært god nytte av Vulkan, ettersom ytelsen er bedre, men også fordi dette er et marked der utviklerne forsøker å skvise ut hver siste bit av maskinvaren for å få bedre ytelse.

Valve er allerede ute med en spillmotor, for Linux og Windows.
Valve er allerede ute med en spillmotor, for Linux og Windows.

Spillmotorer
Dette gjelder også de store spillplattformene på PC-er, og det er ventet at mesteparten av de tunge løftene som må til for å få Vulkan til å fungere best vil bli gjort av produsentene av de store spillmotorene, som Unreal Engine og liknende.

Oppdatert, 16. mars, 10:49:

Avsnittet under er feil. Vi beklager. Her er den korrigerte versjonen:

Allerede ved lansering var Valve ute med en utviklingspakke (SDK) for Vulkan, kalt LunarG, som inneholder verktøy, prøver og debugging-verktøy for Windows og selvfølgelig også Linux, som Valve har forbarmet seg over. Senere skal det komme en Android-variant.

Original tekst: Allerede ved lansering var Valve ute med en spillmotor for Vulkan, kalt LunarG, som inneholder verktøy, prøver og debugging-verktøy for Windows og selvfølgelig også Linux, som Valve har forbarmet seg over. Senere skal det komme en Android-variant.

Dette er bare begynnelsen, etterhvert som spillmotoren begynner med kodingen av Vulkan-biblioteker, er det ventet at disse vil ta mesteparten av jobben med å skvise mest mulig ytelse ut av det nye API-et.

The Talos Principle er først ute med Vulkan-støtte.
The Talos Principle er først ute med Vulkan-støtte.

Det første spillet
The Talos Principle er det første, og foreløpig eneste spillet som er laget med Vulkan-støtte. Spillet er ute for PC, PS4, OS X og Android, og det var ifølge utvikleren så enkelt å implementere Vulkan-støtte at det kun tok fem minutter.

Senere forklarte den samme utvikleren (etter å ha dykket litt dypere) at det ikke var så enkelt likevel. Siden Vulkan gir mer kontroll over ting som minnebruk, må dette programmeres i stedet for å stole på driverne, for eksempel, og dette krever mye mer arbeid – men gir samtidig bedre ytelse.

Ifølge dette innlegget tok det utvikleren tre måneder å porte spillet til Vulkan. Som er litt lengre enn fem minutter for å gjøre det skikkelig.

Enklere med direkte-oversettelse
For spill som bruker OpenGL og er skrevet med GSLS-språket, skulle dette være noe enklere, ettersom dette kan oversettes direkte til SPIR-V i driveren. Samtidig bruker The Talos Principle DirectX 11 og 12 – så spillet har mange forskjellige rendringsplattformer å bruke og å sammenlikne med.

Tester av The Talos Principles veldig tidlige implementasjon av Vulkan på veldig nye drivere (som fortsatt var i beta) fra AMD og NVIDIA viser at Vulkan riktignok er raskere enn OpenGL, men at det fortsatt er et godt stykke å gå frem til DirectX 11.

Poenget med testene er imidlertid at de viser hvordan Vulkan er bedre på scenarier som er CPU-begrenset (altså at grafikkortet må vente på prosessoren) ettersom Vulkan er bedre på å bruke flere kjerner.

Bildekvaliteten sammenliknet med DirectX 11 og OpenGL er følge testene omtrent det samme.

Vulkan er vanskeligere å lære, men har potensialet over tid til å bli mye raskere enn DirectX 11, mener utvikleren av The Talos Principle – før eller senere vil APIen kunne måle seg med DirectX 12.

Nvidia har postet et par demoer å nettsidene sine.
Nvidia har postet et par demoer å nettsidene sine.

Test selv
Nvidia la ut nye beta-drivere på 7. mars i år som støtter Vulkan i hoveddriveren, så hvis du installert disse, er du allerede klar for Vulkan. For å se litt snadder på Nvidias utviklersider, der de har postet en del demoer, kan du titte her.

AMD har sin egen Vulkan-side her, der du kan lære litt mer om Vulkan-API-et og laste ned den siste beta-driveren.

For en større oversikt over demoer fra andre leverandører, kan du se på Vulkan-sidene til Khronos.

Hva angår Android har Google bestemt seg for å ta kontrollen over implementeringen selv, og har ikke sagt stort mer enn at de vil støtte det, antakelig i en fremtidig versjon av Android.

Vulkan-støttede grafikkort
– All maskinvare som støtter OpenGL ES 3.1 vil støtte Vulkan, sa Khronos Group-presidenten til PCWorld i mai 2015. – Det vil si alle GPUer som kan kjøre shadere.

For PCer sin del vil det si OpenGL 4.3, som kom i 2012 og støtter kort tilbake til GeForce 400 og Radeon HD 5000 – eller hvilket som helst grafikkort kjøpt etter 2010.

Oppsummering
Vulkan er en spennende ny API som vil gjøre det lettere å porte spill til seg selv fra for eksempel DirectX og spesielt OpenGL. Om ikke så veldig lenge vil vi se Vulkan i aksjon i alt fra mobilspill til PCer, men det kan ta litt tid.

Ettersom mesteparten av jobben nå må gjøres av programmet i stedet for driveren, slik det gjøres i OpenGL, må alt fra flertrådete kommandokøer til minneadministrasjon programmeres i spillet. Dette gjør Vulkan til et nokså komplekst dyr å leke med.

Samtidig gjør det Vulkan-programmer mye raskere, og bedre på å utnytte multiprosessor-oppsett og kan sende parallelle kommandoer til grafikkortet, akkurat som DirectX 12.

Mesteparten av denne jobben kommer etter hvert antakelig til å bli gjort av de store selskapene som lager spillmotorer, som for eksempel Valve og av Epic Games med sin Unreal Engine. De kommer til å investere i å skaffe seg spisskompetansen som må til for kode Vulkan skikkelig.

Vulkan er veldig gode nyheter for Valve sin Steam Machine og alle som bruker Linux og Android. Valve er allerede ute med en spillmotor som bruker Vulkan, det finnes drivere klare på så godt som alle plattformer.

Alt vi kan gjøre nå er å lene oss tilbake og vente på at de gode spillene skal komme — på alle plattformer utenom Apple (enn så lenge).

Stikkord: dypdykk, gdc2016, grafikk, Spill, Vulkan