Een overzicht van de Vulkan API voor grafische rendering
De Vulkan API is een open-source, low-level graphics-API die wordt gebruikt om te beschrijven hoe computers zijn programmeerbaar, met name op het gebied van 3D-graphics en real-time graphics. Het is ontwikkeld door The Khronos Group en werd in juni 2016 officieel aangekondigd. Vulkan is vooral interessant voor programmeurs die grafische applicaties willen ontwikkelen, want het biedt een veel grotere controle over de hardware dan zijn voorgangers.
De API zelf bestaat uit Vulkan drie onderdelen: de low-level API (Vulkan), de middelbare API (GL/VK) en de hoge API (OpenGL). Vulkan is geschikt voor programmeurs die hun toepassingen op verschillende platformen willen draaien, zoals PC’s, spelkonsollen, mobiele apparaten, Android-telefoons en servers. In dit artikel gaan we in op wat Vulkan is, hoe het werkt, zijn voordelen en beperkingen.
Een korte geschiedenis van grafische rendering
Om te beginnen met een overzicht van de historie: de eerste graphics-API was DirectX 1.0, die werd uitgebracht door Microsoft in 1995 voor Windows NT. Later verscheen OpenGL (OpenGL API), die door Silicon Graphics International (SGI) werd ontwikkeld en wereldwijd populair werd.
Het gebruikte model van deze tijd is gebaseerd op een grafische pipeline bestaande uit vijf stappen: vertex processing, clipping, rasterization, texturing en color blending. Dit model werd later voortgezet in DirectX 8.0 (2000) en OpenGL 1.5 (1998).
Een overzicht van Vulkan
Vulkan is de low-level API, een open-source graphics-API die een compleet nieuw model voor grafische rendering biedt. Het heeft als doel om te voorkomen dat programmeurs opnieuw uitgebreide documentatie moeten lezen en dat het leren van nieuwe APIs moet kostbaar worden.
In tegenstelling tot zijn voorgangers is Vulkan ontworpen met de bedoeling om gebruiksvriendelijk te zijn voor beginnende grafische programmeurs. De API bestaat uit een set van programma-ondersteunde interface (API) en een specifieke applicatieprogramma-interface (SPI) die gebruikers de mogelijkheid geeft om rechtstreeks toegang te krijgen tot hardwarefunties.
Werkingsprincipe
Vulkan werkt op basis van een meer flexibele aanpak dan zijn voorgangers. Het is gebaseerd op het “Device-Device” concept, waarbij programmeurs eerder de grafische schermen bepalen in plaats van alleen de rendering-pagina te controleren. Vulkan wordt gebruikt voor real-time graphics, enkele games en simulatie-toepassingen.
Vulkan werkt door verschillende stappen uit te voeren: eerste moet worden geïnitialiseerd (met behulp van vkCreateInstance) een device bestaan, dat kan zijn een grafische kaart of een CPU. Vervolgens kunnen aanwezigheden (e.g., buffers en texture) op de device gemaakt worden.
Typen en variaties
Er zijn verschillende types graphics-API’s: low-level en middelbare API. Vulkan is een voorbeeld van een low-level API, die rechtstreeks toegang biedt tot hardwarefunties (zoals registers). De middelbare API GL/VK biedt meer opgeleide interface om toepassingen in te schakelen.
In het geval van OpenGL geeft de programmeur aan welk model hij wil gebruiken en dat is het einde, OpenGL treedt vervolgens automatisch voor alle stappen op die nodig zijn. Het werkt dus niet met hardwareondersteuning maar alleen met de applicatie zelf.
Legale of regionele context
Een aantal regels moeten worden genoteerd in verband met rechtstreeks toegang tot een grafische kaart: De programmeur moet expliciet aangeven dat hij gebruik wil maken van één specifieke hardware. Verder bepaalt de fabrikant (als die er is) wie mag meedoen aan de ontwikkeling.
Het ligt voor de hand dat men, wanneer een app wordt ontwikkeld op basis van Vulkan, moet zorgdragen voor de licentie-overeenkomst. Deze overeenkomsten zijn in het algemeen vrij om te downloaden en ze bestaan uit twee onderdelen: eerste er is de applicatie API die beschikt over alle bevoegdheden nodig voor implementatie van een app, tweede men heeft ook recht op toezicht over alle specifieke gegevens met betrekking tot de fabrikant.
Vrije spelmodi en non-monetaire opties
In het algemeen is er niet zoveel sprake te zijn van beperkingen bij de uitvoering van een grafische app, voor Vulkan ontwikkelaars (de programmeurs), is met name opmerkelijk dat men, door hun licentieovereenkomst over VULKAN het recht heeft om één vrije applicatie per licentie te laten draaien.
Het spel kan dan worden gebruikt op een PC of bijvoorbeeld Android en/of iOS. Verder is er voor de meeste apps ook een niet-geldige gratis versie beschikbaar, waarbij men deze opties niet heeft om extra geld in te verdienen door bepaalde toegangsrechten aan spelers te geven die bereid zijn daar betaald voor.
Eerste spelen en games
Grote bedrijven hebben grote investeringen gedaan in de ontwikkeling van nieuwe spellen met behulp van deze open API, waaronder NVIDIA’s DirectX 11/OpenGL game engine. De spelindustrie wordt hierdoor ook geïnteresseerd voor het ondersteunen van hun huidige bestaande grafische hardware.
De technologie zelf maakt gebruik van GPU (Graphics Processing Unit) met behulp van Direct X, OpenGL en andere DirectX API’s, die worden gebruikt voor het controleren van 3D-grafiek in game-schermen. Er is ook een “beta” versie beschikbaar op GitHub dat nog niet stabiel genoeg is.
Voor- en nadelen
Een van de meest aantrekkelijke zaken over Vulkan zijn, zo beweerden programmeurs zelf, zijn lage kosten om te ontwikkelen en gebruiken. Deze kunnen vooral interessanter worden voor diegenen met weinig financiële middelen.
Ook maakt het gebruik van deze API een eenvoudiger in- en uitbrengen mogelijk naar de markt omdat men op basis van “standaarden” kan programmeren, waarvan de meeste door mensen geschreven zijn. Daarnaast is er een hoge flexibiliteit om bij te werken aan andere hardware of software.
Echter kennen we ook verschillende nadelen: één grote nadeel zou in het feit kunnen bestaan dat deze open-source API vaak niet zo stabiel is en daardoor gevoelig kan zijn voor bugs. Het ontwikkelaarswerk is zeker intensief maar men vindt dit wel erg leuk.
Bovendien schrijven sommige mensen dat “Vulkan” een onstabiele versie van OpenGL heeft, waarbij vaak veel moeilijkheden optreden bij het installeren. Echter in de meeste gevallen worden deze problemen opgelost zodra men het systeem herstart.
Gebruikerservaring en toegankelijkheid
Zoals voorafgaand is vermeld, zijn er verschillende soorten apparaten die geschikt zijn om een Vulkan-gebaseerd spel te draaien. In de meeste gevallen worden deze spellen door mensen gemaakt die met veel moeite hebben gevochten maar uiteindelijk zijn ze al heel geliefd.
Uw gebruikerservaring zou als volgt kunnen beschreven worden: Men start een Vulkan-gebaseerd spel, dan hebt men de mogelijkheid om rechtstreeks toegang te krijgen tot de hardware van uw apparaat. De prestaties verbeteren zeker niet maar het is nog best lekker.
Risico’s en verantwoordelijke overwegingen
Vulkan ontwikkelaars zijn bijzonder betrokken in een open-source licentie-overeenkomst, met de bepaling dat ze verplicht zijn om alle auteursrechtelijk beschermd materiaal vrij te geven. Voor het grote publiek is Vulkan niet gebruikelijk; daarnaast hebben ze een minder gebruiksvriendelijke interface dan andere API’s.
Bijna iedereen kan wel bedenken dat er bij de ontwikkeling van grafische toepassingen, er ook bepaalde risico’s zitten en daarom heeft men het nodige opgetuigd om mensen te waarschuwen voor eventuele mogelijke gevaren.
Eindconclusie
Op basis van alles wat hierboven is verteld over de Vulkan API kan worden geconcludeerd dat het gebruik van deze open-source graphics-API een optie is geworden die zeer interessant lijkt. Zeker in verband met real-time rendering en gameontwikkeling.
Zoals eerder aangegeven, heeft men hierbij dan ook voordeel uit behaald door veel kosten te vermijden bij de ontwikkelingsfasen van grafische softwareproducten. De werking zelf is goed onder controle gekomen dankzij het open-source karakter en zit nu niet meer in handen van één particuliere partij.
Verder kan er een opmerking worden gemaakt dat de Vulkan API ook voor programmeurs die een beetje onervaren zijn in de grafische techniek, gebruikelijk is geworden. Door deze redenen is het gebruik van dit systeem dan dus erg gunstig bevonden te hebben.
