Vulkan API: Een overzicht van de open-source graphics-api voor computers
Inleiding
Het is moeilijk om te denken aan grafische programmeertalen zonder naar OpenGL of DirectX te kijken. Deze twee hebben de laatste decennialen het merendeel van de spelontwikkelaars beheerst en vormden daarmee de belangrijkste interface tussen applicaties en hardware voor 2D- en 3D-grafische weergave. In 2015 verscheen er echter een nieuwe concurrent: Vulkan. Ontwikkeld door AMD, Khronos Group https://vulkan-casino.nl/ en anderen, werd dit systeem als open-source opvolger van OpenGL ontworpen om het renderen van graphics voor computersystemen efficiënter te maken.
Eenvoudige definitie en toepassingen
Vulkan is een openstandaard die applicaties in staat stelt om hardware-specificaties uit te benutten op een manier die sneller, energie-efficiënter en robuuster dan OpenGL of DirectX is. In tegenstelling tot zijn voorgangers kan het systeem gebruikmaken van meerdere cores en apparaten tegelijkertijd waardoor systemen met veel draaiende hardware beter ondersteund worden. Het wordt gezien als de toekomstige grafische interface voor PC, maar wordt inmiddels al toegepast op mobiele apparaten.
Het belangrijkste van Vulkan ligt in zijn flexibiliteit en compatibiliteitsniveau. Vulkan is uitgebreid ontworpen om verschillende hardware-platforms te ondersteunen: Windows 7 (met Service Pack 1 of hoger), Linux, macOS Sierra (10.12) of hoger (via open-source projecten).
Werking van de Vulkan API
Vulkan werkt door een grafische pipeline die het renderingproces beheert. Het systeem bestaat uit vijf onderling verbonden delen:
- Application : De applicatie zelf kan een specifieke implementatie zijn of, meer gebruikelijk, de libvulkan-bibliotheken gebruiken.
- Implementation layer (Interface) : Hier vinden we het communicatiesysteem dat tussen Vulkan en applicatie functioneert. In normale situaties zal dit gedaan worden door een systeemeigen library of API.
- Device driver (Hardware) : De fysieke hardware omvat in principe de GPU, de system-DRAM en eventuele specifieke bijbehorende hulpprogrammera’s.
Vermogen van Vulkan
De basisconcepten zijn niet echt moeilijk om te begrijpen. Zo wordt een gehele grafische pipeline gerealiseerd door applicaties die de commandostructuur uitvoeren, waaronder enkele basishandelingen zoals vertex-shaders voor 3D-objecten of fragment-shaders voor teksturbehandeling. Vulkan omvat eveneens veel verfijning op deze punten.
Opvolging van een applicatie zorgt ervoor dat een GPU-klasse kan worden geselecteerd (een specifieke klasse binnen de fysieke hardware) en een besturingselement gekozen wordt. Bovendien maakt Vulkan het ook mogelijk om meerdere keren opnieuw gebruik te maken van dezelfde resources door ze in te ruilen.
Vulcan ondersteuning
Ondanks de complexiteit, zijn er veel implementaties die al een uitgebreide set aan functionaliteiten en ondersteuningsfuncties hebben. Er worden zelfs open-source frameworks ontwikkeld waarmee men gemakkelijk in Vulkan kan coderen.
Eind 2015 werd het eerste vulkaanproject aangekondigd, waarbij Khronos een eenvoudige set aan tools gaf voor de ondersteuning van verschillende hardware-platforms. Vanaf mei 2016 werden deze projecten officieel ontsloten bij AMD’s GitHub-repository.
Eind januari 2017 kwam Vulkan versie 1.0 uit, het eerste complete en volledig werkend prototype dat beschikbaar is gesteld voor ontwikkelaars.
Vulcan-variant
Zoals de meeste open-source frameworks kent Vulkan verschillende varianten van zijn implementatie om specifieke applicaties te ondersteunen. Zo biedt een systeem als Mesa (een set aan graphics drivers) een 3D-softwareomgeving die op basis van hardware-vereisten reageert.
Ook andere projecten, zoals Clang en LLVM, zijn in staat om bestanden voor Vulkan naar de juiste bestandsformaten te converteeren. Bovendien worden er diverse open-source frameworks ontwikkeld waarmee men gemakkelijk in vulkaan kan coderen.
Vulcan en 3D-simulatie
Deze variant van Vulkan is vooral relevant voor spelontwikkeling, maar de combinatie met het bestaan van andere projecten zoals GLM maakt hem ook geschikt om applicaties te schrijven die een 2D-weergave nodig hebben.
Sinds kort biedt Vulkan ondersteuning aan OpenGL ES, de standaard voor grafische rendering op mobiele apparaten. Een ander nieuw project dat is toegevoegd sinds januari 2017 zijn verschillende implementaties van vulkaan die gebruikmaken van WebGL (een browser API).
Overzicht
Vulkan biedt een zeer krachtige set aan functionaliteiten om applicaties te bouwen die zowel de behoeften van gebruikers als hardwarevormen bevinden. Uit het geheel blijkt dat vulkaan al een krachtig systeem is en kan worden aangemerkt als één der belangrijkste tools voor 3D-ontwikkeling.
Het systeem bevat heel wat details, maar daarnaast ook talrijke hulpprogrammeringen die men in verschillende gevallen kan gebruiken.