Cargando…

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...

Descripción completa

Detalles Bibliográficos
Clasificación:Libro Electrónico
Autores principales: Castorina, Marco (Autor), Sassone, Gabriel (Autor)
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