PRODUCT SUPPORT ANNOUNCEMENT
See the latest about COVID-19 shipping availability and video/Web Edition load errors. Learn more.
This eBook includes the following formats, accessible from your Account page after purchase:
EPUB The open industry format known for its reflowable content and usability on supported mobile devices.
MOBI The eBook format compatible with the Amazon Kindle and Amazon Kindle applications.
PDF The popular standard, used most often with the free Adobe® Reader® software.
This eBook requires no passwords or activation to read. We customize your eBook by discreetly watermarking it with your name, making it uniquely yours.
Also available in other formats.
Register your product to gain access to bonus material or receive a coupon.
The Definitive Vulkan™ Developer’s Guide and Reference: Master the Next-Generation Specification for Cross-Platform Graphics
The next generation of the OpenGL specification, Vulkan, has been redesigned from the ground up, giving applications direct control over GPU acceleration for unprecedented performance and predictability. Vulkan™ Programming Guide is the essential, authoritative reference to this new standard for experienced graphics programmers in all Vulkan environments.
Vulkan API lead Graham Sellers (with contributions from language lead John Kessenich) presents example-rich introductions to the portable Vulkan API and the new SPIR-V shading language. The author introduces Vulkan, its goals, and the key concepts framing its API, and presents a complex rendering system that demonstrates both Vulkan’s uniqueness and its exceptional power.
You’ll find authoritative coverage of topics ranging from drawing to memory, and threading to compute shaders. The author especially shows how to handle tasks such as synchronization, scheduling, and memory management that are now the developer’s responsibility.
Vulkan™ Programming Guide introduces powerful 3D development techniques for fields ranging from video games to medical imaging, and state-of-the-art approaches to solving challenging scientific compute problems. Whether you’re upgrading from OpenGL or moving to open-standard graphics APIs for the first time, this guide will help you get the results and performance you’re looking for.
About This Book xxi
About the Author xxix
Chapter 1: Overview of Vulkan 1
Instances, Devices, and Queues 3
Object Types and Function Conventions 18
Managing Memory 19
Multithreading in Vulkan 20
Mathematical Concepts 21
Enhancing Vulkan 23
Shutting Down Cleanly 31
Chapter 2: Memory and Resources 35
Host Memory Management 36
Device Memory Management 73
Chapter 3: Queues and Commands 95
Device Queues 96
Creating Command Buffers 97
Recording Commands 101
Recycling Command Buffers 105
Submission of Commands 107
Chapter 4: Moving Data 111
Managing Resource State 112
Clearing and Filling Buffers 123
Clearing and Filling Images 125
Copying Image Data 128
Copying Compressed Image Data 132
Stretching Images 133
Chapter 5: Presentation 137
Presentation Extension 138
Presentation Surfaces 138
Swap Chains 143
Full-Screen Surfaces 152
Performing Presentation 159
Cleaning Up 162
Chapter 6: Shaders and Pipelines 165
An Overview of GLSL 166
An Overview of SPIR-V 169
Executing Work 186
Resource Access in Shaders 188
Chapter 7: Graphics Pipelines 225
The Logical Graphics Pipeline 226
The Framebuffer 237
Creating a Simple Graphics Pipeline 240
Dynamic State 264
Chapter 8: Drawing 267
Getting Ready to Draw 268
Vertex Data 271
Indexed Draws 272
Indirect Draws 281
Chapter 9: Geometry Processing 287
Geometry Shaders 309
Programmable Point Size 319
Line Width and Rasterization 321
User Clipping and Culling 324
The Viewport Transformation 331
Chapter 10: Fragment Processing 337
Scissor Testing 338
Depth and Stencil Operations 340
Multisample Rendering 350
Logic Operations 357
Fragment Shader Outputs 358
Color Blending 362
Chapter 11: Synchronization 367
Chapter 12: Getting Data Back 387
Reading Data with the Host 398
Chapter 13: Multipass Rendering 401
Input Attachments 402
Attachment Contents 408
Secondary Command Buffers 420
Appendix: Vulkan Functions 425