Vulkan Programming Guide: The Official Guide to Learning Vulkan (Paperback) (Vulkan 程式設計指南:學習 Vulkan 的官方指南)

Graham Sellers, John Kessenich

買這商品的人也買了...

相關主題

商品描述

<About>

Features
Authoritative, trusted, and comprehensive coverage, straight from two of Vulkan's development team leads
Covers both the new portable Vulkan API and SPIR-V shading language
Enables developers to gain direct control over GPU acceleration for maximum performance and predictability
Helps developers create a wide spectrum of 3D applications, and solve challenging compute problems in science and engineering
Contains extensive new code examples throughout

<Description>

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

Extensively tested code examples to demonstrate Vulkan’s capabilities and show how it differs from OpenGL
Expert guidance on getting started and working with Vulkan’s new memory system
Thorough discussion of queues, commands, moving data, and presentation
Full explanations of the SPIR-V binary shading language and compute/graphics pipelines
Detailed discussions of drawing commands, geometry and fragment processing, synchronization primitives, and reading Vulkan data into applications
A complete case study application: deferred rendering using complex multi-pass architecture and multiple processing queues
Appendixes presenting Vulkan functions and SPIR-V opcodes, as well as a complete Vulkan glossary

<Sample Content>

Table of Contents

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

商品描述(中文翻譯)

<關於>
特色
- 來自兩位Vulkan開發團隊負責人的權威、可信和全面的涵蓋範圍
- 包括新的可攜式Vulkan API和SPIR-V著色語言
- 幫助開發人員直接控制GPU加速,以獲得最大的性能和可預測性
- 幫助開發人員創建各種3D應用程序,並解決科學和工程中的挑戰性計算問題
- 內含豐富的新代碼示例

<描述>
《Vulkan™編程指南》:掌握跨平台圖形的下一代規範
OpenGL的下一代規範Vulkan從頭重新設計,使應用程序能夠直接控制GPU加速,實現前所未有的性能和可預測性。《Vulkan™編程指南》是所有Vulkan環境中經驗豐富的圖形程序員的必備權威參考。

Vulkan API負責人Graham Sellers(並由語言負責人John Kessenich提供貢獻)通過豐富的示例介紹了可攜式Vulkan API和新的SPIR-V著色語言。作者介紹了Vulkan、其目標以及框架其API的關鍵概念,並展示了一個複雜的渲染系統,展示了Vulkan的獨特性和卓越的功能。

作者特別介紹了從繪圖到內存、從線程到計算著色器等任務的處理方式,這些任務現在是開發人員的責任。

《Vulkan™編程指南》介紹了強大的3D開發技術,適用於從視頻遊戲到醫學成像的各個領域,以及解決具有挑戰性的科學計算問題的最新方法。無論您是從OpenGL升級還是首次轉向開放標準圖形API,本指南都將幫助您獲得所需的結果和性能。

內容包括
- 大量經過測試的代碼示例,以展示Vulkan的功能並顯示其與OpenGL的區別
- 關於開始使用和使用Vulkan的新內存系統的專家指導
- 對隊列、命令、數據移動和呈現的詳細討論
- 對SPIR-V二進制著色語言和計算/圖形管線的全面解釋
- 對繪圖命令、幾何和片段處理、同步原語以及將Vulkan數據讀入應用程序的詳細討論
- 完整的案例研究應用程序:使用複雜的多通道架構和多個處理隊列的延遲渲染
- 附錄介紹Vulkan函數和SPIR-V操作碼,以及完整的Vulkan詞彙表

<示例內容>
目錄