Mastering graphics programming with Vulkan : develop a modern rendering engine from first principles to state-of-the-art techniques /
Develop a rendering framework by implementing next-generation 3D graphics, leveraging advanced Vulkan features, and getting familiar with efficient real-time ray tracing techniques uncovered by leading industry experts Key Features Develop high-performance rendering techniques in Vulkan Automate som...
Clasificación: | Libro Electrónico |
---|---|
Autores principales: | , |
Formato: | Electrónico eBook |
Idioma: | Inglés |
Publicado: |
Birmingham :
Packt Publishing,
2023.
|
Temas: | |
Acceso en línea: | Texto completo (Requiere registro previo con correo institucional) |
Tabla de Contenidos:
- Cover
- Title Page
- Copyright and Credits
- Acknowledgments
- Contributors
- Table of Contents
- Preface
- Part 1: Foundations of a Modern Rendering Engine
- Chapter 1: Introducing the Raptor Engine and Hydra
- Technical requirements
- Windows
- Linux
- macOS
- How to read this book
- Understanding the code structure
- Layers of code
- Understanding the glTF scene format
- PBR in a nutshell
- A word on GPU debugging
- Summary
- Further reading
- Chapter 2: Improving Resources Management
- Technical requirements
- Unlocking and implementing bindless rendering
- Checking for support
- Creating the descriptor pool
- Updating the descriptor set
- Update to shader code
- Automating pipeline layout generation
- Compiling GLSL to SPIR-V
- Understanding the SPIR-V output
- From SPIR-V to pipeline layout
- Improving load times with a pipeline cache
- Summary
- Further reading
- Chapter 3: Unlocking Multi-Threading
- Technical requirements
- Task-based multi-threading using enkiTS
- Why task-based parallelism?
- Using the enkiTS (Task-Scheduler) library
- Asynchronous loading
- Creating the I/O thread and tasks
- Vulkan queues and the first parallel command generation
- The AsynchronousLoader class
- Recording commands on multiple threads
- The allocation strategy
- Command buffer recycling
- Primary versus secondary command buffers
- Drawing using primary command buffers
- Drawing using secondary command buffers
- Spawning multiple tasks to record command buffers
- Summary
- Further reading
- Chapter 4: Implementing a Frame Graph
- Technical requirements
- Understanding frame graphs
- Building a graph
- A data-driven approach
- Implementing the frame graph
- Implementing topological sort
- Driving rendering with the frame graph
- Summary
- Further reading
- Chapter 5: Unlocking Async Compute
- Technical requirements
- Replacing multiple fences with a single timeline semaphore
- Enabling the timeline semaphore extension
- Creating a timeline semaphore
- Waiting for a timeline semaphore on the CPU
- Using a timeline semaphore on the GPU
- Adding a separate queue for async compute
- Submitting work on separate queues
- Implementing cloth simulation using async compute
- Benefits of using compute shaders
- Compute shaders overview
- Writing compute shaders
- Summary
- Further reading
- Part 2: GPU-Driven Rendering
- Chapter 6: GPU-Driven Rendering
- Technical requirements
- Breaking down large meshes into meshlets
- Generating meshlets
- Understanding task and mesh shaders
- Implementing task shaders
- Implementing mesh shaders
- GPU culling using compute
- Depth pyramid generation
- Occlusion culling
- Summary
- Further reading
- Chapter 7: Rendering Many Lights with Clustered Deferred Rendering
- Technical requirements
- A brief history of clustered lighting
- Differences between forward and deferred techniques
- Implementing a G-buffer