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...
Otros Autores: | , |
---|---|
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.