Chapter -1: about this guide
This series is a work in progress
What it is
A concise-ish overview of:
- GPUs
- The core concepts of Vulkan
- Using Vulkan for general-purpose computation
- Using Vulkan for graphical operations
What it is not
- A step-by-step guide to implementing a rendering engine
- An in-depth guide to the Vulkan API
- A collection of concrete examples
Prerequisites
Knowing how to read and program.
Why not read X instead?
I have been working on Batyr on-and-off for the past few years (2% of the time on and the remaining 98% off), and I have had the time to forget everything about Vulkan a few times by now. Getting back in the saddle is unpleasant: most guides are too verbose or focused on specific workloads for my liking (I cannot see how the pieces fit together if everything is spread over 40 different pages), and the doc is a bit too terse (as a good doc should be). This guide aims for a sweet spot. It focuses on big ideas and leaves smaller details aside — the doc is here to fill the gaps.
A particularity of this guide is that it introduces Vulkan as a general library for interacting with GPUs, rather than focusing solely on graphics programming. This offers two key benefits: other functionalities do not feel like afterthoughts, and it allows us to introduce Vulkan's complexity in a staggered manner. By the time we get to the graphics pipeline, most involved concepts should feel familiar.
I believe that this guide can serve as a decent introduction to Vulkan for resourceful beginners, but what do I know?
Some good alternatives/complementary sources
- https://www.vulkan.org/learn
- https://docs.vulkan.org/guide/latest/index.html
- https://registry.khronos.org/vulkan/specs/1.3-extensions/html/
- https://vkguide.dev
Caveat
May Will contain mistakes, I am not a pro.