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:
- Tristan Lorach's presentation Vulkan & Nvidia — Getting started gives a great overview of Vulkan: comparison of the rendering pipelines of Vulkan vs. OpenGL, buffers, descriptor sets. This is probably used best in conjunction with...
- Alexander Overvoorde's Vulkan Tutorial takes you through from a introduction of Vulkan and its general workflow, to triangle drawing, using Uniform Buffers, up to texture mapping and depth buffering. The examples are nicely written and concise. If you're familiar with OpenGL, these tutorials should get you up to speed pretty quickly.
- Sascha Willems' Vulkan Examples are the go-to resource if you want to learn from code. Sascha has examples for everything (emphasis added due to sheer awe) — from simple triangle drawing, to scene rendering of multiple meshes, and even compute shader examples and distance field fonts.
- Kessenich & Sellers' Vulkan Programming Guide is also available as a preview on Safari Books. You can read it for free for 10 days, albeit only after registration. The physical book will be available by the end of November.
- 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.
- 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.