Recently I asked the community for beginner-friendly resources on Vulkan, and I compiled a list of them that you can find below.
For the beginners reading this, Vulkan is a new graphics API-- in other words, a way to communicate with your GPU and make it do things. It's managed by the Khronos Group, which means it's under multi-company governance - being managed by the industry for the industry. Anyone who wants to do work on GPUs (not restricted to graphics programmers!) should at least have a high level knowledge of what it is.
What am I looking for in a beginner-friendly tutorial? It should provide a description of what Vulkan is, in words that anyone can understand. After that it can assume some programming knowledge. No graphics API knowledge is assumed.
I compiled this list because I saw many discussing how Vulkan was too hard, or even recommending that beginners master OpenGL first. It reminds me of a lot of the attitudes surrounding C++ when I was first learning it-- yes, it's more lines of code, but that doesn't mean it can't be a fine place for a beginner to start learning. Beginner tutorials are great for people who want to end up doing it professionally, people who want a taste of it to see if they want to bother diving deeper, and for people who want to have a high level knowledge of modern GPU programming in case it's useful in the future.
Dustin puts my feelings to words nicely in his tutorial:
So how did I finally break through that wall of understanding? I'll give you a hint. It begins with a V and ends with ulkan. "But Vulkan is the hardz" I hear you saying. "Shouldn't I start with something easy like OpenGL?" Emphatically I say NO.
The point is that Vulkan removes the mystery. It spells things out, plain as day. And for a programmer, this is awesome! It's intellectually honest about what it needs, and what it's doing. It will teach you what it really means to program a GPU. Don't think of all the extra code as a mountain to climb, but instead as a clearly articulated set of instructions to help you get where you need to go.
Go ahead and try out the below tutorials. I've found that everyone has a different favorite depending on learning style, background, and goals-- so if you find yourself getting stuck on one, move on to another and see if that's a better fit.
- VULKAN TUTORIAL
- A SIMPLE VULKAN COMPUTE EXAMPLE
- VULKANO: SAFE RUST WRAPPER AROUND THE VULKAN API
- OCULUS VIRTUAL REALITY SDK: "OCULUS ROOM TINY" MINIMAL VULKAN SAMPLE CODE (VK/MAIN.CPP)
- MINIMAL EXAMPLE OF USING VULKAN FOR COMPUTE OPERATIONS
- I AM GRAPHICS AND SO CAN YOU
- API WITHOUT SECRETS: INTRODUCTION TO VULKAN
- VULKAN TUTORIAL IN THE LUNARG SDK
Khronos® and Vulkan® are registered trademarks, and ANARI™, WebGL™, glTF™, NNEF™, OpenVX™, SPIR™, SPIR-V™, SYCL™, OpenVG™ and 3D Commerce™ are trademarks of The Khronos Group Inc. OpenXR™ is a trademark owned by The Khronos Group Inc. and is registered as a trademark in China, the European Union, Japan and the United Kingdom. OpenCL™ is a trademark of Apple Inc. and OpenGL® is a registered trademark and the OpenGL ES™ and OpenGL SC™ logos are trademarks of Hewlett Packard Enterprise used under license by Khronos. All other product names, trademarks, and/or company names are used solely for identification and belong to their respective owners.