注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當(dāng)前位置: 首頁出版圖書科學(xué)技術(shù)計(jì)算機(jī)/網(wǎng)絡(luò)軟件與程序設(shè)計(jì)Vulkan學(xué)習(xí)指南

Vulkan學(xué)習(xí)指南

Vulkan學(xué)習(xí)指南

定 價(jià):¥99.00

作 者: 帕敏德·辛格(Parminder Singh) 著,王銳 譯
出版社: 機(jī)械工業(yè)出版社
叢編項(xiàng): 華章程序員書庫
標(biāo) 簽: 暫缺

ISBN: 9787111647867 出版時(shí)間: 2020-04-01 包裝: 平裝
開本: 16開 頁數(shù): 332 字?jǐn)?shù):  

內(nèi)容簡介

  Vulkan是新一代的圖形和計(jì)算API,是Khronos推出的產(chǎn)品。該API繼承自O(shè)penGL,為開發(fā)者提供了極大的靈活性與高性能。 本書將首先介紹Vulkan系統(tǒng)的基本原理,嘗試與硬件設(shè)備進(jìn)行連接并查詢可用的隊(duì)列、內(nèi)存類型,以及提供的功能。Vulkan很冗長,所以在深入編程之前,開發(fā)者需要首先理解相關(guān)的調(diào)試技巧,這樣即使是新手也可以使用Vulkan的層和擴(kuò)展特性來排除一些常見錯(cuò)誤。 通過閱讀本書,你將學(xué)到: ●學(xué)習(xí)Vulkan編程模型的基本知識,理解現(xiàn)代GPU設(shè)備的基本功能。 ●實(shí)現(xiàn)設(shè)備、指令緩存,以及隊(duì)列的功能,與物理硬件設(shè)備進(jìn)行連接。 ●了解Vulkan中的驗(yàn)證層概念,學(xué)習(xí)調(diào)試方法與技巧。 ●深入理解內(nèi)存管理的知識,控制宿主機(jī)和設(shè)備端的內(nèi)存操作。 ●理解和實(shí)現(xiàn)緩存與圖像資源的類型。使用線性和優(yōu)化類型的紋理。 ●定義渲染通道中的繪制操作,實(shí)現(xiàn)完整的圖形流水線。 ●通過SPIR-V管理GLSL著色器,使用描述符集和推送常數(shù)來更新著色器資源。 ●學(xué)習(xí)繪制的過程、同步資源,并通過交換鏈將3D場景渲染到屏幕上。

作者簡介

  帕敏德·辛格(Parminder Singh) 新加坡Blackmagic Design公司的計(jì)算機(jī)圖形學(xué)工程師。在過去的十年里,他一直致力于網(wǎng)絡(luò)模擬、幾何建模、導(dǎo)航、自動(dòng)駕駛、信息娛樂系統(tǒng)、圖像處理及后期制作等領(lǐng)域的圖形學(xué)軟件開發(fā)。他的研究主要包括泛圖形的GPU編程、通用計(jì)算,平臺移植以及性能優(yōu)化技術(shù)。

圖書目錄

●第1章 開始學(xué)習(xí)新一代3D圖形API 1
1.1 Vulkan及其演化史1
1.2 Vulkan與OpenGL的對比2
1.3 重要術(shù)語4
1.4 Vulkan的原理5
1.4.1 Vulkan的執(zhí)行模型5
1.4.2 Vulkan的隊(duì)列6
1.4.3 對象模型7
1.4.4 對象生命周期與指令語法7
1.4.5 錯(cuò)誤檢查與驗(yàn)證8
1.5 理解Vulkan應(yīng)用程序8
1.5.1 驅(qū)動(dòng)8
1.5.2 應(yīng)用程序9
1.5.3 WSI9
1.5.4 SPIR-V9
1.5.5 LunarG SDK9
1.6 開始學(xué)習(xí)Vulkan編程模型9
1.6.1 硬件初始化10
1.6.2 窗口展示表面11
1.6.3 資源設(shè)置12
1.6.4 流水線設(shè)置14
1.7 總結(jié)18

●第2章 你的第一個(gè)Vulkan偽代碼程序19
2.1 Vulkan的安裝19
2.2 Hello World偽代碼20
2.2.1 初始化—與設(shè)備握手的過程21
2.2.2 交換鏈初始化—查詢WSI擴(kuò)展24
2.2.3 著色器支持—將著色器編譯到SPIR-V32
2.2.4 構(gòu)建布局—描述符與流水線布局33
2.2.5 創(chuàng)建渲染通道—定義通道屬性34
2.2.6 幀緩存—將繪制圖像關(guān)聯(lián)到渲染通道35
2.2.7 產(chǎn)生幾何體—在GPU內(nèi)存中保存一個(gè)頂點(diǎn)36
2.2.8 流水線狀態(tài)管理—?jiǎng)?chuàng)建流水線38
2.2.9 執(zhí)行渲染通道—顯示Hello World!!!41
2.2.10 隊(duì)列的提交和同步—發(fā)送任務(wù)43
2.2.11 使用展示層進(jìn)行顯示—渲染三角形44
2.3 全部整合到一起45
2.4 總結(jié)46

●第3章 連接硬件設(shè)備47
3.1 學(xué)習(xí)使用LunarG SDK48
3.2 使用CMake設(shè)置我們的第一個(gè)工程49
3.3 擴(kuò)展簡介53
3.4 創(chuàng)建一個(gè)Vulkan實(shí)例58
3.5 理解物理設(shè)備和邏輯設(shè)備65
3.5.1 物理設(shè)備65
3.5.2 邏輯設(shè)備69
3.6 理解隊(duì)列和隊(duì)列族71
3.6.1 查詢隊(duì)列族72
3.6.2 創(chuàng)建隊(duì)列74
3.7 整合設(shè)備和隊(duì)列的代碼76
3.8 總結(jié)78

●第4章 調(diào)試Vulkan程序80
4.1 初探Vulkan中的調(diào)試方法81
4.2 了解LunarG驗(yàn)證層及其特性82
4.3 在Vulkan程序中實(shí)現(xiàn)調(diào)試83
4.4 總結(jié)90

●第5章 Vulkan中的指令緩存和內(nèi)存管理91
5.1 開始使用指令緩存91
5.1.1 顯式同步92
5.1.2 指令緩存中的指令類型93
5.1.3 指令緩存與隊(duì)列94
5.2 理解指令池和指令緩存API94
5.2.1 創(chuàng)建指令池95
5.2.2 指令緩存的分配97
5.3 記錄指令緩存99
5.3.1 隊(duì)列提交100
5.3.2 隊(duì)列等待101
5.4 實(shí)現(xiàn)指令緩存的封裝類101
5.4.1 實(shí)現(xiàn)指令緩存的分配過程102
5.4.2 記錄指令緩存的分配過程103
5.4.3 提交指令到隊(duì)列104
5.5 管理Vulkan內(nèi)存105
5.5.1 宿主機(jī)內(nèi)存105
5.5.2 設(shè)備內(nèi)存106
5.5.3 分配設(shè)備內(nèi)存108
5.5.4 釋放設(shè)備內(nèi)存110
5.5.5 從宿主機(jī)訪問設(shè)備內(nèi)存110
5.5.6 延遲分配內(nèi)存111
5.6 總結(jié)112

●第6章 圖像資源分配與交換鏈構(gòu)建113
6.1 什么是圖像資源113
6.2 了解圖像資源116
6.2.1 創(chuàng)建圖像116
6.2.2 理解圖像的布局120
6.2.3 創(chuàng)建圖像視圖121
6.3 內(nèi)存分配和圖像資源的綁定122
6.3.1 獲取內(nèi)存分配的需求條件123
6.3.2 在設(shè)備端分配物理內(nèi)存123
6.3.3 將分配的內(nèi)存綁定到圖像對象124
6.4 交換鏈簡介124
6.4.1 了解交換鏈實(shí)現(xiàn)的工作流125
6.4.2 交換鏈實(shí)現(xiàn)類的框圖127
6.4.3 渲染器—窗口管理的自定義類127
6.4.4 VulkanSwapChain—交換鏈的管理類132
6.4.5 使用WSI創(chuàng)建表面并關(guān)聯(lián)到窗口135
6.4.6 支持畫面展示的圖形隊(duì)列137
6.4.7 查詢交換鏈的圖像格式138
6.4.8 創(chuàng)建交換鏈139
6.5 創(chuàng)建一個(gè)深度圖147
6.5.1 平鋪簡介147
6.5.2 創(chuàng)建深度緩存圖像對象149
6.5.3 獲取深度圖的內(nèi)存需求150
6.5.4 判斷內(nèi)存的類型151
6.5.5 將物理內(nèi)存分配并綁定到深度圖像151
6.5.6 圖像布局變換152
6.5.7 圖像布局變換與內(nèi)存屏障152
6.5.8 創(chuàng)建圖像視圖156
6.6 總結(jié)程序流程157
6.6.1 初始化157
6.6.2 渲染—顯示輸出窗口158
6.7 總結(jié)158

●第7章 緩存資源、渲染通道、幀緩存以及SPIR-V著色器160
7.1 理解Vulkan的緩存資源類型161
7.1.1 創(chuàng)建緩存資源對象161
7.1.2 創(chuàng)建緩存視圖162
7.2 使用緩存資源創(chuàng)建幾何體164
7.2.1 準(zhǔn)備幾何體數(shù)據(jù)164
7.2.2 創(chuàng)建頂點(diǎn)緩存164
7.2.3 緩存創(chuàng)建概述165
7.2.4 實(shí)現(xiàn)一個(gè)緩存資源—?jiǎng)?chuàng)建幾何體的頂點(diǎn)緩存166
7.2.5 理解代碼流線169
7.3 理解渲染通道171
7.3.1 附件171
7.3.2 子通道172
7.3.3 渲染通道對應(yīng)的Vulkan API172
7.3.4 實(shí)現(xiàn)渲染通道176
7.4 使用渲染通道來創(chuàng)建幀緩存179
7.5 清除背景顏色182
7.5.1 設(shè)置渲染通道實(shí)例的背景顏色183
7.5.2 渲染顏色背景185
7.6 在Vulkan中實(shí)現(xiàn)著色器186
7.6.1 SPIR-V簡介187
7.6.2 將GLSL著色器編譯為SPIR-V188
7.6.3 實(shí)現(xiàn)著色器190
7.7 總結(jié)197

●第8章 流水線和流水線狀態(tài)管理199
8.1 開始學(xué)習(xí)流水線199
8.2 通過PCO緩沖流水線對象203
8.2.1 創(chuàng)建流水線緩沖對象203
8.2.2 合并流水線緩沖204
8.2.3 從流水線緩沖獲取數(shù)據(jù)205
8.2.4 實(shí)現(xiàn)PCO206
8.3 創(chuàng)建圖形流水線207
8.3.1 實(shí)現(xiàn)圖形流水線209
8.3.2 銷毀流水線211
8.4 理解計(jì)算流水線211
8.5 Vulkan的流水線狀態(tài)對象213
8.5.1 動(dòng)態(tài)狀態(tài)214
8.5.2 頂點(diǎn)輸入狀態(tài)216
8.5.3 輸入裝配狀態(tài)217
8.5.4 光柵化224
8.5.5 融混226
8.5.6 視口管理229
8.5.7 深度測試和模板測試230
8.5.8 多重采樣狀態(tài)232
8.6 實(shí)現(xiàn)流水線235
8.7 總結(jié)237

●第9章 繪制對象238
9.1 概述Vulkan中的繪制過程238
9.2 準(zhǔn)備繪制對象240
9.2.1 錄制渲染通道指令240
9.2.2 綁定流水線對象244
9.2.3 設(shè)置繪制對象的幾何體信息245
9.2.4 定義動(dòng)態(tài)視口246
9.2.5 裁切248
9.2.6 繪制指令249
9.2.7 可繪制對象的準(zhǔn)備過程250
9.3 渲染當(dāng)前可繪制對象252
9.3.1 獲取交換鏈圖像253
9.3.2 執(zhí)行繪制的指令緩存對象254
9.3.3 使用展示引擎顯示輸出內(nèi)容254
9.3.4 實(shí)現(xiàn)可繪制對象的渲染256
9.4 渲染索引幾何體259
9.5 理解Vulkan中的同步圖元262
9.5.1 柵欄262
9.5.2 信號量265
9.5.3 事件266
9.6 改變顯示窗口的大小269
9.7 總結(jié)271

●第10章 描述符與推送常數(shù)273
10.1 理解描述符的概念273
10.2 如何在Vulkan中實(shí)現(xiàn)一致變量292
10.3 推送常數(shù)的更新299
10.4 總結(jié)304

●第11章 繪制紋理305
11.1 圖像資源快速回顧305
11.2 紋理繪制的準(zhǔn)備工作306
11.4 使用優(yōu)化平鋪實(shí)現(xiàn)圖像資源322
11.5 在圖像和緩存之間復(fù)制數(shù)據(jù)329
11.6 更新描述符集330
11.7 總結(jié)332

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) m.ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號