Vulkan 應用開發指南 (Vulkan Programming Guide: The Official Guide to Learning Vulkan)

[美]格拉漢姆·塞勒斯(Graham Sellers) 約翰·克賽尼希(John Kessenich)

  • Vulkan 應用開發指南 (Vulkan Programming Guide: The Official Guide to Learning Vulkan)-preview-1
  • Vulkan 應用開發指南 (Vulkan Programming Guide: The Official Guide to Learning Vulkan)-preview-2
Vulkan 應用開發指南 (Vulkan Programming Guide: The Official Guide to Learning Vulkan)-preview-1

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

商品描述

本書系統地介紹下一代OpenGL規範Vulkan,揭示了Vulkan的獨特性。本書主要內容包括:內存和資源、隊列和命令、數據的移動、圖像的展示、著色器和管線、圖形管線對象、繪制命令、幾何體的處理、片段的處理、同步、數據的回讀以及多渲染通道等。

本書適合圖形程序開發人員、熟悉圖形和計算API的程序員閱讀,也可供對Vulkan感興趣的專業人士閱讀。

作者簡介

作者:[美]格拉漢姆·塞勒斯(Graham Sellers)約翰·克賽尼希(John Kessenich)譯者:李曉波等
格拉漢姆·塞勒斯(Graham Sellers),AMD軟件架構師和研究員,負責AMD的Radeon和Fire系列產品的OpenGL與Vulkan驅動程序的開發,在OpenGL ARB中代表AMD為核心OpenGL規範和擴展做出了大量貢獻,擁有多項圖形和圖像處理專利。

約翰·克賽尼希(John Kessenich),Vulkan方面的語言專家,LunarG公司架構師,自1999年以來積極參與開發OpenGL ARB與Khronos中的OpenGL、GLSL、Vulkan和SPIR-V。他創建了SPIR-V,還創建了著色器編譯器用於提高可移植性。

目錄大綱

第1章Vulkan概述1 

1.1引言1 
1.2實例、設備和隊列2 
1.2.1 Vulkan實例3 
1.2.2 Vulkan物理設備5 
1.2.3物理設備內存8 
1.2.4設備隊列9 
1.2.5創建邏輯設備11 
1.3對像類型和函數約定14 
1.4管理內存14 
1.5 Vulkan裡的多線程15 
1.6數學概念16 
1.6.1向量和矩陣16 
1.6.2坐標系17 
1.7增強Vulkan 17 
1.7.1層17 
1.7.2擴展20 
1.8徹底地關閉應用程序23 
1.9總結24 

第2章內存和資源25 

2.1主機內存管理25 
2.2資源30 
2.2.1緩衝區31 
2.2.2格式和支持33 
2.2.3圖像36 
2.2.4資源視圖46 
2.2. 5銷毀資源52 
2.3設備內存管理53 
2.3.1分配設備內存54 
2.3.2 CPU訪問設備內存56
2.3.3綁定內存到資源上59 
2.3.4稀疏資源62 
2.4總結68 

第3章隊列和命令69 

3.1設備隊列69 
3.2創建命令緩衝區71 
3.3記錄命令73 
3.4回收利用命令緩衝區76 
3.5命令的提交77 
3.6總結79 

第4章移動數據80 

4.1管理資源狀態81 
4.1.1管線屏障81 
4.1.2全局內存屏障83 
4.1.3緩衝區內存屏障86 
4.1.4圖像內存屏障87 
4.2清除和填充緩衝區89 
4.3清空和填充圖像90 
4.4複製圖像數據92 
4.5複製壓縮圖像數據96 
4.6拉伸圖像97 
4.7總結98 

第5章展示99 

5.1展示擴展99 
5.2展示表面100 
5.2.1在微軟的Windows上展示100 
5.2 .2在基於Xlib的平台上展示101 
5.2.3在Xcb上展示102 
5.3交換鏈103 
5.4全屏表面110 
5.5執行展示115 
5.6清除117
5.7總結118 

第6章著色器和管線119 

6.1 GLSL概述120 
6.2 SPIR-V概述122 
6.2.1如何表示SPIR-V 122 
6.2.2把SPIR-V傳遞給Vulkan 125 
6.3管線126 
6.3.1計算管線126 
6.3.2創建管線127 
6.3.3特化常量128 
6.3.4加速管線的創建131 
6.3.5綁定管線134 
6.4執行工作135 
6.5在著色器中訪問資源136 
6.5.1描述符集136 
6.5.2綁定資源到描述符集145 
6.5.3綁定描述符集150 
6.5.4 uniform、紋素和存儲
 緩衝區151 
6.5.5推送常量154 
6.5.6採樣圖像157 
6.6總結162 

第7章圖形管線163 

7.1邏輯圖形管線163 
7.2渲染通道166 
7.3幀緩衝區172 
7.4創建一個簡單的圖形管線174 
7.4.1圖形著色器階段175 
7.4.2頂點輸入狀態179 
7.4.3輸入組裝183 
7.4.4細分狀態186
7.4.5視口狀態187 
7.4.6光柵化狀態188 
7.4.7多重採樣狀態190 
7.4.8深度和模板狀態190 
7.4.9顏色混合狀態191 
7.5動態狀態193 
7.6總結195 

第8章繪製196 

8.1準備繪製197 
8.2頂點數據199 
8.3索引繪製200 
8.3.1只用索引的繪製204 
8.3.2重置索引205 
8.4實例化206 
8.5間接繪製208 
8.6總結211 

第9章幾何體處理212 

9.1表面細分212 
9.1. 1表面細分配置213 
9.1.2表面細分相關變量218 
9.1.3表面細分示例:置換貼圖225 
9.2幾何著色器229 
9.2.1圖元裁剪235 
9.2.2幾何著色器實例化236 
9.3可編程頂點尺寸237 
9.4線的寬度以及光柵化239 
9.5用戶裁剪和剔除241 
9.6視口變換247 
9.7總結250 

第10章片段處理251 

10.1裁剪測試251
10.2深度和模板測試253 
10.2.1深度測試254 
10.2.2模板測試258 
10.2.3早期片段測試259 
10.3多重採樣渲染260 
10.3.1採樣率著色262 
10.3.2多重採樣解析263 
10.4邏輯操作264 
10.5片段著色器輸出266 
10.6顏色混合269 
10.7總結271 

第11章同步272 

11.1柵欄273 
11.2事件279 
11.3信號量282 
11.4總結285 

第12章回讀數據286 

12.1查詢286 
12.1.1執行查詢288 
12.1.2計時查詢293 
12.2通過主機讀取數據294 
12.3總結295 

第13章多通道渲染296 

13.1輸入附件297 
13.2附件內容303 
13.2.1附件的初始化303 
13.2.2渲染區域305 
13.2.3保存附件內容306 
13.3副命令緩衝區313 
13.4總結315 
附錄A Vulkan函數316
詞彙表318