This page is under development

Context

Low level graphics APIs are the future of graphics programing. The next-generation of graphics APIs, considing mainly of Vulkan, DirectX 12, and Metal, are all designed to be much faster, utilize all the capabilities of newer GPUs and CPUs, and provide many more features than older apis like OpenGL and DirectX 11. These APIs are capable of tens of millions of drawcalls per second and give access to new technology like Real-time Raytracing.

Motivation

The downsides? These new apis are many times more verbose and lower level than anything before them. To prevent bottlenecks caused by tracking resources and syncronizing operations on the GPU, these APIs shift a lot of work back to the graphics developer. This means that writing pure Vulkan code (for instance) is a very long, tedious, bug-ridden and frustrating task. A very simple Hello Triangle example, that woud take maybe 50 lines of code to write in OpenGL, takes more than 1000 lines in Vulkan. So what can be done? How can this new technology be accessed and used without driving programmers insane?

Quantum GFX

The various Quantum GFXs projects attempt to find a solution to this question. Currently only QuantumVk has been developed and tested. These projects are essentially middle-ware wrappers around Vulkan, DirectX, and Metal. The idea behind these projects is to allow these graphics APIs to be accessed at a higher level whilst sacrificing as little speed and flexibility as possible. For this reason all API native functionality is exposed to the user (meaning you can retrieve native handles from each project and manipulate them how you would in the native API). These means that when using QuantumVk (for example) you can program an entire application without making a single Vulkan call, or you can only use QuantumVk for initialization and use raw Vulkan for running commands, or you can do a mixture of both). For more info regarding each subproject within Quantum GFX go here.