Preface
Chapter 1: Vulkan Core Concepts
Technical requirements
Getting to know the Vulkan API
Calling API functions
Learning about Vulkan objects
Using Volk to load Vulkan functions and extensions
Using Vulkan extensions correctly
Using the Validation Layer for error checking
Enumerating available instance layers
Enumerating available instance extensions
Initializing the Vulkan instance
Creating a surface
Enumerating Vulkan physical devices
Caching the properties of queue families
Enumerating physical device extensions
Reserving queue families
Creating a Vulkan logical device
Retrieving the queue object handle
Creating a command pool
Allocating, recording, and submitting commands
Reusing command buffers
Creating render passes
Creating framebuffers
Creating image views
The Vulkan graphics pipeline
Compiling shaders to SPIR-V
Dynamic states
Creating a graphics pipeline
Swapchain
Understanding synchronization in the swapchain £¿ fences and semaphores
Populating submission information for p...resentation
Presenting images
Rendering a triangle
Chapter 2: Working with Modern Vulkan
Technical requirements
Understanding Vulkan¡¯s memory model
Instantiating the VMA library
Creating buffers
Uploading data to buffers
Creating a staging buffer
How to avoid data races using ring buffers
Setting up pipeline barriers
Creating images (textures)
Creating an image view
Creating a sampler
Providing shader data
Customizing shader behavior with specialization constants
Implementing MDI and PVP
Adding flexibility to the rendering pipeline using dynamic rendering
Transferring resources between queue families
Chapter 3: Implementing GPU-Driven Rendering
Technical requirements
Implementing GPU-driven line rendering
Expanding line-drawing techniques to render textual values from shaders
Drawing text using SDF
Frustum culling using compute shaders
Chapter 4: Exploring Techniques for Lighting, Shading, and Shadows
Technical requirements
Implementing G-buffer for deferred rendering
Implementing screen space reflections
Implementing shadow maps for real-time shadows
Implementing screen space ambient occlusion
Implementing a lighting pass for illuminating the scene
Chapter 5: Deciphering Order-Independent Transparency
Technical requirements
Implementing Depth-Peeling
Implementing Dual Depth-Peeling
Implementing Linked-List Order-Independent Transparency
Implementing Weighted Order-Independent Transparency
Chapter 6: Anti-Aliasing Techniques
Technical requirements
Enabling and using Vulkan¡¯s MSAA
Applying FXAA
Utilizing TAA
Applying DLSS
Chapter 7: Ray Tracing and Hybrid Rendering
Technical requirements
Implementing a GPU ray tracer
Implementing hybrid rendering
Chapter 8: Extended Reality with OpenXR
Technical requirements
Getting started with OpenXR
How to implement single pass multiview rendering
Implementing static foveated rendering with a fragment density map
Retrieving eye gaze information from OpenXR in your app
Implementing dynamic foveated rendering using Qualcomm¡¯s fragment density map Offset extension
Using half floats to reduce memory load
Chapter 9: Debugging and Performance Measurement Techniques
Technical requirements
Frame debugging
Naming Vulkan objects for easy debugging
Printing values from shaders in Vulkan
Intercepting validation layer messages
Retrieving debug information from shaders
Measuring performance in Vulkan with timestamp queries
Index
Other Books You May Enjoy