Vulkan Resource Collection

Recently, I've been digging a bit into the new high performance graphics API Vulkan, but found that comprehensive guides are still a little rare.

Yet, quite a few people have invested incredible effort into creating tutorials, presentations, and sample code, covering various aspects and usages of the Vulkan API. Here's a list of the ones that I found especially useful:

Overview tutorials

Further reading

  • Nvidia has a good blog post on Vulkan Memory Management, detailing some differences to OpenGL, where you would often create separate buffers for distinct objects, which is frowned upon in Vulkanland.
  • Along similar lines, Dominik Witczak's Most common mistakes in Vulkan applications gives information on what usually goes wrong when applications are ported from DX11/OpenGL to Vulkan. This presentation I found very useful as it details many practical problems, e.g. how command buffers should be created and handled, or how descriptor sets and layouts should look like, just to name two.
  • Axel Gneiting's port of Quake 1/QuakeSpasm to Vulkan, named vkQuake is a great resource if you want to dig into how Vulkan can be used in a real-world application.
  • Benjamin Glatzel has also recently published his Vulkan-powered 3D engine Intrinsic on Github. Intrinsic has (of course) a more modern design than QuakeSpasm, checking out the source code is definitely worthwhile.

References

  • As usual, Khronos has a Quick Reference card for Vulkan 1.0 available. Useful to have as a printout.
  • Last but not least, there's the official Vulkan 1.0 specification, which is extremely helpful in case you get stuck at some point. The spec also has the best explanation of how descriptor pools, sets and layouts are supposed to work. Have a look at the PDF version — much nicer on the eyes.

Finally, in case you still need more Vulkan food, Geeks3D has a much more extensive list of resources, and continues to collect tutorials, presentations, whitepapers and videos.

Happy hacking!