Implementing a G-buffer
From the beginning of this project, we decided we would implement a deferred renderer. It’s one of the more common approaches, and some of the render targets will be needed in later chapters for other techniques:
- The first step in setting up multiple render targets in Vulkan is to create the framebuffers – the textures that will store the G-buffer data – and the render pass.
This step is automated, thanks to the frame graph (see Chapter 4, Implementing a Frame Graph, for details); however, we want to highlight our use of a new Vulkan extension that simplifies render pass and framebuffer creation. The extension is VK_KHR_dynamic_rendering
.
Note
This extension has become part of the core specification in Vulkan 1.3, so it’s possible to omit the KHR
suffix on the data structures and API calls.
- With this extension, we don’t have to worry about creating the render pass and framebuffers ahead of time...