The Modern Vulkan Cookbook A Practical Guide to 3D Graphics and Advanced Real-Time Rendering Techniques in Vulkan

Discover essential real-time rendering techniques that can be extended or applied directly to existing or new rendering engines focusing only on Vulkan Key Features Explore a wide range of advanced 3D graphics programming techniques to leverage the full potential of Vulkan API Learn tips, tricks, an...

Descripción completa

Detalles Bibliográficos
Otros Autores: Kakkar, Preetish, author (author), Maurer, Mauricio, author
Formato: Libro electrónico
Idioma:Inglés
Publicado: Birmingham, England : Packt Publishing [2024]
Edición:First edition
Materias:
Ver en Biblioteca Universitat Ramon Llull:https://discovery.url.edu/permalink/34CSUC_URL/1im36ta/alma991009815726706719
Tabla de Contenidos:
  • Cover
  • Title Page
  • Copyright and Credits
  • Contributors
  • Table of Contents
  • Preface
  • Chapter 1: Vulkan Core Concepts
  • Technical requirements
  • Getting to know the Vulkan API
  • Calling API functions
  • Getting ready
  • How to do it…
  • Learning about Vulkan objects
  • Getting ready
  • How to do it…
  • Using Volk to load Vulkan functions and extensions
  • Getting ready
  • How to do it…
  • Using Vulkan extensions correctly
  • Getting ready
  • How to do it…
  • Using the Validation Layer for error checking
  • Getting ready
  • How to do it…
  • Enumerating available instance layers
  • Getting ready
  • How to do it…
  • Enumerating available instance extensions
  • Getting ready
  • How to do it…
  • Initializing the Vulkan instance
  • Getting ready
  • How to do it…
  • Creating a surface
  • Getting ready
  • How to do it…
  • Enumerating Vulkan physical devices
  • Getting ready
  • How to do it…
  • Caching the properties of queue families
  • Getting ready
  • How to do it…
  • Enumerating physical device extensions
  • Getting ready
  • How to do it…
  • Reserving queue families
  • Getting ready
  • How to do it…
  • Creating a Vulkan logical device
  • Getting ready
  • How to do it…
  • Retrieving the queue object handle
  • Getting ready
  • How to do it…
  • Creating a command pool
  • Getting ready
  • How to do it…
  • Allocating, recording, and submitting commands
  • Getting ready
  • How to do it…
  • Reusing command buffers
  • Getting ready
  • How to do it…
  • Creating render passes
  • Getting ready
  • How to do it…
  • Creating framebuffers
  • Getting ready
  • How to do it…
  • Creating image views
  • Getting ready
  • How to do it…
  • The Vulkan graphics pipeline
  • How to do it...
  • Compiling shaders to SPIR-V
  • Getting ready
  • How to do it…
  • Dynamic states
  • Getting ready
  • How to do it…
  • Creating a graphics pipeline
  • Getting ready.
  • How to do it…
  • Swapchain
  • Getting ready
  • How to do it…
  • Understanding synchronization in the swapchain - fences and semaphores
  • Getting ready
  • How to do it…
  • Populating submission information for presentation
  • Getting ready
  • How to do it…
  • Presenting images
  • Getting ready
  • How to do it…
  • Rendering a triangle
  • Getting ready
  • How to do it…
  • Chapter 2: Working with Modern Vulkan
  • Technical requirements
  • Understanding Vulkan's memory model
  • Getting ready
  • How to do it…
  • Instantiating the VMA library
  • How to do it…
  • Creating buffers
  • Getting ready
  • How to do it…
  • Uploading data to buffers
  • Getting ready
  • How to do it…
  • Creating a staging buffer
  • Getting ready
  • How to do it…
  • How to avoid data races using ring buffers
  • Getting ready
  • How to do it…
  • Setting up pipeline barriers
  • Getting ready
  • How to do it…
  • Creating images (textures)
  • Getting ready
  • How to do it…
  • Creating an image view
  • Getting ready
  • How to do it…
  • Creating a sampler
  • Getting ready
  • How to do it…
  • Providing shader data
  • Getting ready
  • How to do it…
  • Specifying descriptor sets with descriptor set layouts
  • Getting ready
  • How to do it…
  • Passing data to shaders using push constants
  • Getting ready
  • How to do it…
  • Creating a pipeline layout
  • Getting ready
  • How to do it…
  • Creating a descriptor pool
  • Getting ready
  • How to do it…
  • Allocating descriptor sets
  • Getting ready
  • How to do it…
  • Updating descriptor sets during rendering
  • Getting ready
  • How to do it…
  • Passing resources to shaders (binding descriptor sets)
  • Getting ready
  • How to do it…
  • Updating push constants during rendering
  • Getting ready
  • How to do it…
  • Customizing shader behavior with specialization constants
  • Getting ready
  • How to do it…
  • Implementing MDI and PVP
  • Implementing MDI.
  • Getting ready
  • How to do it…
  • Using PVP
  • Getting ready
  • How to do it…
  • Adding flexibility to the rendering pipeline using dynamic rendering
  • Getting ready
  • How to do it…
  • Transferring resources between queue families
  • Getting ready
  • How to do it…
  • Chapter 3: Implementing GPU- Driven Rendering
  • Technical requirements
  • Implementing GPU-driven line rendering
  • Getting ready
  • How to do it…
  • Expanding line-drawing techniques to render textual values from shaders
  • Getting ready
  • How to do it…
  • Drawing text using SDF
  • Getting ready
  • How to do it…
  • See also
  • Frustum culling using compute shaders
  • Getting ready
  • How to do it…
  • How it works…
  • Chapter 4: Exploring Techniques for Lighting, Shading, and Shadows
  • Technical requirements
  • Implementing G-buffer for deferred rendering
  • Getting ready
  • How to do it...
  • Implementing screen space reflections
  • Getting ready
  • How to do it...
  • See also
  • Implementing shadow maps for real-time shadows
  • Getting ready
  • How to do it...
  • There's more …
  • See also
  • Implementing screen space ambient occlusion
  • Getting ready
  • How to do it...
  • See also
  • Implementing a lighting pass for illuminating the scene
  • Getting ready
  • How to do it…
  • Chapter 5: Deciphering Order-Independent Transparency
  • Technical requirements
  • Implementing Depth-Peeling
  • Getting ready
  • How to do it…
  • Implementing Dual Depth-Peeling
  • Getting ready
  • How to do it…
  • Implementing Linked-List Order-Independent Transparency
  • Getting ready
  • How to do it…
  • There's more…
  • See also
  • Implementing Weighted Order-Independent Transparency
  • Getting ready
  • How to do it…
  • There's more…
  • See also
  • Chapter 6: Anti-Aliasing Techniques
  • Technical requirements
  • Enabling and using Vulkan's MSAA
  • Getting ready
  • How to do it...
  • Applying FXAA.
  • Getting ready
  • How to do it...
  • Utilizing TAA
  • Getting ready
  • How to do it...
  • Applying DLSS
  • Getting ready
  • How to do it...
  • See also
  • Chapter 7: Ray Tracing and Hybrid Rendering
  • Technical requirements
  • Implementing a GPU ray tracer
  • Monte Carlo method
  • Getting ready
  • How to do it...
  • See also
  • Implementing hybrid rendering
  • Getting ready
  • How to do it...
  • Chapter 8: Extended Reality with OpenXR
  • Technical requirements
  • Getting started with OpenXR
  • Getting ready
  • How to do it…
  • See also
  • How to implement single pass multiview rendering
  • Getting ready
  • How to do it…
  • Implementing static foveated rendering with a fragment density map
  • Getting ready
  • How to do it…
  • See also
  • Retrieving eye gaze information from OpenXR in your app
  • Getting ready
  • How to do it…
  • Implementing dynamic foveated rendering using Qualcomm's fragment density map Offset extension
  • Getting ready
  • How to do it…
  • Using half floats to reduce memory load
  • Getting ready
  • How to do it…
  • Chapter 9: Debugging and Performance Measurement Techniques
  • Technical requirements
  • Frame debugging
  • Getting ready
  • How to do it…
  • See also
  • Naming Vulkan objects for easy debugging
  • Getting ready
  • How to do it…
  • Printing values from shaders in Vulkan
  • Getting ready
  • How to do it…
  • Intercepting validation layer messages
  • Getting ready
  • How to do it…
  • Retrieving debug information from shaders
  • Getting ready
  • How to do it…
  • Measuring performance in Vulkan with timestamp queries
  • Getting ready
  • How to do it…
  • Index
  • Other Books You May Enjoy.