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.
PDF The popular standard, used most often with the free Acrobat® 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.
Coverage includes
Figures xiii
Tables xv
Listings xvii
About This Book xxi
Acknowledgments xxvii
About the Author xxix
Chapter 1: Overview of Vulkan 1
Introduction 2
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
Summary 33
Chapter 2: Memory and Resources 35
Host Memory Management 36
Resources 41
Device Memory Management 73
Summary 93
Chapter 3: Queues and Commands 95
Device Queues 96
Creating Command Buffers 97
Recording Commands 101
Recycling Command Buffers 105
Submission of Commands 107
Summary 109
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
Summary 135
Chapter 5: Presentation 137
Presentation Extension 138
Presentation Surfaces 138
Swap Chains 143
Full-Screen Surfaces 152
Performing Presentation 159
Cleaning Up 162
Summary 163
Chapter 6: Shaders and Pipelines 165
An Overview of GLSL 166
An Overview of SPIR-V 169
Pipelines 175
Executing Work 186
Resource Access in Shaders 188
Summary 224
Chapter 7: Graphics Pipelines 225
The Logical Graphics Pipeline 226
Renderpasses 230
The Framebuffer 237
Creating a Simple Graphics Pipeline 240
Dynamic State 264
Summary 266
Chapter 8: Drawing 267
Getting Ready to Draw 268
Vertex Data 271
Indexed Draws 272
Instancing 280
Indirect Draws 281
Summary 286
Chapter 9: Geometry Processing 287
Tessellation 288
Geometry Shaders 309
Programmable Point Size 319
Line Width and Rasterization 321
User Clipping and Culling 324
The Viewport Transformation 331
Summary 335
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
Summary 366
Chapter 11: Synchronization 367
Fences 368
Events 376
Semaphores 381
Summary 384
Chapter 12: Getting Data Back 387
Queries 388
Reading Data with the Host 398
Summary 400
Chapter 13: Multipass Rendering 401
Input Attachments 402
Attachment Contents 408
Secondary Command Buffers 420
Summary 423
Appendix: Vulkan Functions 425
Glossary 429
Index 443