What is Vulkan?¶
The Inexor project is using Vulkan API for the main rendering engine. Vulkan is a new, low level API (application programming interface) for high-performance graphics programming and computing. It is the successor to OpenGL, and it is important to state that is is very different from it. Vulkan is not just a new version of OpenGL or an extension of it. Like DirectX 12 or Apple’s Metal, Vulkan is a very low level API which allows for much deeper control over the graphics card and the driver. Unlike OpenGL, Vulkan API is build in a way it fits the architecture of modern graphics cards. This offers better performance (higher FPS) due to reduction of overhead and driver guesswork during runtime. The most important benefit of Vulkan is the fact that it allows for multithreaded rendering, which is not possible in OpenGL at all. In general, Vulkan does a lot of work during the initialization of the application but therefore reduces work during rendering. Since Vulkan is much more explicit in terms of code, it foces you to think about the structure and architecture of your code. Both Vulkan and OpenGL are being developed by the Khronos Group.
Getting into Vulkan¶
You really should watch these expert talks on YouTube:
- GDC 2018 - Getting explicit: How Hard is Vulkan really?
Dustin Land, Software engineer, id-Software.
- DevU 2017: Getting Started with Vulkan
Developers from Imagination, Google and LunarG.
- Porting your engine to Vulkan or DX12
Adam Sawicki, Developer Software Engineer, AMD.
- Vulkan Best Practices Roundtable discussion
NVidia, Imagination, Qualcomm, id-Software, EPIC-games and Google.
- Vulkan Memory Management
Jordan Logan, Developer technology engineer, AMD.
- Vulkan Memory Managenent
Steven Tovey, Developer technology engineer, AMD.
- Vulkan: State of the Union 2019
Developers from ARM, LunarG, NVidia.
Why use Vulkan?¶
Unlike OpenGL, Vulkan fits the design of modern GPUs as it is not just one single state machine.
Vulkan is a low-level API which gives much more control over GPU behaviour. This reduces driver guesswork und avoids undefined behaviour of graphics drivers.
The API is asynchronous and encourages multithreaded rendering. This is a major advantage over OpenGL! Vulkan also wants you to use the GPU asynchronously.
Lower and more predictable CPU load which results in better performance and a reduction of driver guesswork.
The reduction of CPU workload and it’s improved predictability can enforce the GPU to be the limiting factor (as it should be), instead of the CPU.
Vulkan implies memory-management to be done by the application (by you) rather than the driver.
Vulkan is a fresh start, whereas OpenGL contains a myriad of hacks to support very rare use cases.
Available on a variety of platforms: Windows, Linux, mobile devices and much more!
Validation layers and diagnostics can be independently activated during development, allowing better error handling and debugging compared with OpenGL or DirectX. Upon release builds, the validation layers can be deactivated easily.
Vulkan pre-compiles shaders to a standardised bytecode format. This again reduces driver guesswork during runtime.
Vulkan API and most of the drivers are open source! (unlike DirectX 12 for example)
Vulkan has layers and extensions as part of its design. For example it’s easy to put steam overlay into a game simply by enabling Valve’s steam overlay layer.
Vulkan is being developed through an unprecedented collaboration of major industry-leading companies. It is not being developed by one company only (like DirectX by Microsoft). As Vulkan’s motto states, it really is industry-forged.
The ending of the OpenGL era has begun.
How to build¶
Feel free to open a ticket if you have problems generating project map files or building code.
Who supports Vulkan?¶
For a full list of contributors, see this link.
Which engines support Vulkan already?¶
Unreal engine (EPIC games)
id-Tech 7 (id-Software)
Source engine (Valve)
and many more..