628 words
3 minutes
The Vulkan Rendering Rabbit Hole

Vulkan is an incredbile library made by the smart people at Khronos. While it is extremely powerful and versatile, it introduces a high degree of complexity that can make it difficult to use for people learning the ropes. At the same time it is widely used in professional contexts and demo, so knowing your way around Vulkan is extremely useful. This is a collection of links that can be useful to anybody trying to understand Vulkan better.

The best place to get your feet wet is the official guide, it is available both on github and their official website:

  • Vulkan Guide on Github
  • Vulkan Guide Documentation(It also has versioning to checkout the guide with older features)
  • An Introduction To Vulkan Is also a great video form starting point on the theory. Vulkan-Tutorial used to be more known and used, but with time it became obsolete as it requires to write a lot of boilerplate which is not relevant today. As a personal tip: at the beginning it is fine to copy and paste a bit, the amount of boilerplate code needed to write a Vulkan app from scratch can make even the more well intentioned people drop the towel. Ultimately, learning is about understanding and knowing some less than useful lines by heart. There is also other useful sources, such as Intel’s introduction to Vulkan, it’ great albeit quite old, being from 2018 and currently discontinued.
  • Intel’s introduction to Vulkan
  • Learn Vulkan from code samples

In case you are encountering any issues, there is a also a Vulkanised talk going over common troubleshooting when installing Vulkan:

Another great resource to pair with the official guide is Wien’s course on Vulkan itself. It explains all the concepts needed to understand Vulkan’s architecture (the way buffers are used,swap chain, pipelines etc…) and eventually also explores Ray Tracing. It also covers one of the biggest pain points of GPU Development, Fences and Synchronization in general.

Once covered the essential, going over the Best Practices might help understanding more then ideas behind Vulkan and how to best leverage it. For this the Khronos Groups has compiled a number of very useful samples and articles.

Finally, there are some advanced tutorials that will allow you to build a better renderer, beyond the simple project used to understand the library.

  • (2020) Writing an efficient Vulkan Renderer : Performance-focused tutorial on building a Vulkan application (Does not account for 1.3 and 1.4 versions of Vulkan.)
  • (2018-Ongoing) Niagara A great modern renderer built in vulkan. Every part of the code has an associated youtube stream allowing you to see the reasoning for building things that way.

Digging Deeper#

If you want to better understand the shader changes brought about by Vulkan, here is the SPIR-V White Paper. SPIR-V is the intermediate format used by Vulkan before compiling shaders and it is a binary format non readable by humans. You can compile to SPIR-V from any shading language thanks to LLVM. When installing Vulkan you should also get a shader compiler that will translate your code to SPIR-V.

In general, keeping up to date with the talks from Vulkanised, a Vulkan focused conference, is always a great place to understand better where to look.

Updates#

[2025] At vulkanised, Charles Giessen went over the pitfalls to avoid in 2025 when building a Vulkan Renderer. Covers which version to pick (spoiler: the latest stable one!), tools and best practices: