Vulkan開發實戰詳解

Vulkan開發實戰詳解

《Vulkan開發實戰詳解》是2019年7月人民郵電出版社出版的圖書,作者是吳亞峰。

基本介紹

  • 中文名:Vulkan開發實戰詳解
  • 作者:吳亞峰
  • 出版時間:2019年7月
  • 出版社:人民郵電出版社
  • 頁數:730 頁
  • ISBN:9787115509390
  • 定價:139 元
  • 開本:16 開
  • 裝幀:平裝
內容簡介,圖書目錄,

內容簡介

本書共分為19章,介紹了Vulkan的誕生、特點、開發環境的搭建以及運行機制、渲染管線和調試技術,著色器程式語言—GLSL、投影及各種變換、光照、紋理映射、3D模型的載入、混合與霧、兩種測試及片元丟棄、頂點著色器的妙用、片元著色器的妙用、真實光學環境的模擬、陰影及高級光照、幾種高級著色器特效、骨骼動畫、Vulkan的性能最佳化等,最後以一個休閒遊戲—方塊歷險記的案例來展示Vulkan的功能與技術。本書按照必知必會的基礎知識、基於Vulkan實現基本特效以及高級特效、完整遊戲案例的順序,循序漸進地進行詳細講解,適合不同需求、不同水平層次的各類讀者。為了便於讀者學習,隨書提供了書中所有案例的完整原始碼(書中所有案例都給出了安卓版和Windows版,最後的大案例還進一步給出了macOS、iOS和Linux版),最大限度地幫助讀者快速地掌握各方面的開發技術。
本書適合遊戲開發者、程式設計師學習,也可以作為大專院校相關專業的師生學習用書和培訓學校的教材。

圖書目錄

目 錄
第1章 初識Vulkan 1
1.1 Vulkan概覽 1
1.1.1 Vulkan簡介 1
1.1.2 支持Vulkan的遊戲概覽 2
1.2 搭建開發環境 4
1.2.1 Android平台開發環境的配置 4
1.2.2 Windows平台開發環境的配置 8
1.3 第一個Vulkan程式 15
1.3.1 案例的運行效果 15
1.3.2 Vulkan應用程式的基本架構 15
1.3.3 3色三角形案例相關類的介紹 20
1.3.4 Vulkan中的常用方法 22
1.3.5 MyVulkanManager類的
基本結構 28
1.3.6 創建Vulkan實例 31
1.3.7 獲取物理設備列表 32
1.3.8 創建邏輯設備 32
1.3.9 創建命令緩衝 33
1.3.10 獲取設備中支持圖形
工作的佇列 35
1.3.11 初始化交換鏈 35
1.3.12 創建深度緩衝 41
1.3.13 創建渲染通道 43
1.3.14 創建幀緩衝 46
1.3.15 創建繪製用物體 47
1.3.16 初始化渲染管線 51
1.3.17 創建柵欄和初始化呈現信息 62
1.3.18 初始化基本變換矩陣、
攝像機矩陣、投影矩陣 63
1.3.19 執行繪製 63
1.3.20 銷毀相關對象 66
1.3.21 整體流程的執行 67
1.3.22 頂點著色器和片元著色器 68
1.4 Vulkan中立體物體的構建 70
1.5 本章小結 71
第2章 渲染管線和調試技術 72
2.1 渲染管線 72
2.2 著色器的預編譯 79
2.3 Vulkan調試技術 81
2.4 Vulkan GPU大PK 89
2.4.1 移動端GPU的4大家族 89
2.4.2 PC端GPU中3大家族 91
2.5 本章小結 92
第3章 著色器程式語言——GLSL 93
3.1 著色語言概述 93
3.2 著色語言基礎 94
3.2.1 數據類型概述 94
3.2.2 數據類型的基本使用 98
3.2.3 運算符 100
3.2.4 各個數據類型的構造函式 102
3.2.5 類型轉換 104
3.2.6 存儲限定符 104
3.2.7 插值限定符 107
3.2.8 一致塊 108
3.2.9 layout限定符 109
3.2.10 流程控制 111
3.2.11 函式的聲明和使用 113
3.2.12 片元著色器中浮點及整型
變數精度的指定 114
3.2.13 程式的基本結構 114
3.3 特殊的內建變數 115
3.3.1 頂點著色器中的內建變數 115
3.3.2 片元著色器中的內建變數 116
3.3.3 內建常量 117
3.4 著色語言的內置函式 117
3.4.1 角度轉換與三角函式 118
3.4.2 指數函式 119
3.4.3 常見函式 120
3.4.4 幾何函式 123
3.4.5 矩陣函式 124
3.4.6 向量關係函式 125
3.4.7 紋理採樣函式 126
3.4.8 微分函式 129
3.4.9 浮點數打包與解包函式 129
3.5 用invariant修飾符避免值變
問題 130
3.6 預處理器 131
3.7 本章小結 132
第4章 投影與各種變換 133
4.1 矩陣相關類的介紹 133
4.1.1 矩陣數學計算類—Matrix 133
4.1.2 矩陣狀態管理
類—MatrixState3D 134
4.2 攝像機的設定 137
4.3 兩種投影方式 138
4.3.1 正交投影 138
4.3.2 透視投影 144
4.3.3 推送常量 146
4.4 各種變換 148
4.4.1 基本變換的相關數學知識 148
4.4.2 平移變換 149
4.4.3 旋轉變換 150
4.4.4 縮放變換 151
4.4.5 基本變換的實質 152
4.5 所有變換的完整流程 153
4.6 繪製方式 156
4.6.1 各種繪製方式概覽 156
4.6.2 點與線段繪製方式 158
4.6.3 三角形條帶與扇面繪製方式 161
4.6.4 索引法繪製 164
4.7 設定合理的視角 169
4.8 設定合理的投影參數 174
4.9 深度偏移 178
4.10 卷繞和背面剪裁 181
4.10.1 基本知識 181
4.10.2 一個簡單的案例 182
4.11 間接繪製 183
4.11.1 背景知識 184
4.11.2 頂點法間接繪製 184
4.11.3 索引法間接繪製 186
4.12 本章小結 188
第5章 光照 189
5.1 曲面物體的構建 189
5.1.1 球體構建的基本原理 189
5.1.2 案例效果概覽 190
5.1.3 開發步驟 190
5.2 基本光照效果 194
5.2.1 光照的基本模型 194
5.2.2 環境光 195
5.2.3 散射光 199
5.2.4 鏡面光 205
5.2.5 3種光照通道的合成 210
5.3 定位光與定向光 212
5.4 點法向量和面法向量 215
5.5 光照的每頂點計算與每片元計算 218
5.6 本章小結 223
第6章 紋理映射 224
6.1 初識紋理映射 224
6.2 一個簡單的案例 225
6.2.1 開發前的準備工作 225
6.2.2 紋理相關類 226
6.2.3 案例代碼的開發 241
6.2.4 圖像的瓦片組織方式 248
6.2.5 色彩通道的靈活組合 250
6.3 紋理拉伸 251
6.3.1 四種拉伸方式概覽 251
6.3.2 不同拉伸方式的案例 254
6.4 紋理採樣 259
6.4.1 紋理採樣概述 259
6.4.2 最近點採樣 259
6.4.3 線性紋理採樣 260
6.4.4 MIN與MAG採樣 261
6.4.5 不同紋理採樣方式的案例 262
6.5 Mipmap紋理 266
6.5.1 基本原理 266
6.5.2 一個簡單的案例 268
6.6 多重紋理與過程紋理 272
6.6.1 案例概覽 273
6.6.2 將2D紋理映射到球面上的
策略 273
6.6.3 案例的場景結構 274
6.6.4 開發過程 275
6.7 壓縮紋理的使用 283
6.7.1 Android平台下的壓縮紋理 284
6.7.2 PC中Windows平台下的
壓縮紋理 286
6.8 點精靈 289
6.8.1 基本知識 289
6.8.2 一個簡單的案例 289
6.9 3D紋理 292
6.9.1 3D棋盤紋理的準備 293
6.9.2 3D棋盤紋理案例的開發 294
6.10 2D紋理數組 297
6.10.1 2D紋理數組的準備 297
6.10.2 2D紋理數組案例的開發 298
6.11 各向異性過濾 302
6.11.1 背景知識 303
6.11.2 一個簡單的案例 303
6.12 本章小結 305
第7章 更逼真的場景——3D模型的載入 306
7.1 obj模型檔案概述 306
7.1.1 obj檔案的格式 306
7.1.2 用3ds Max設計3D模型 307
7.2 載入obj檔案 308
7.2.1 載入僅有頂點坐標數據與
面數據的obj檔案 308
7.2.2 載入後自動計算面法向量 312
7.2.3 載入後自動計算平均法向量 315
7.2.4 載入紋理坐標 317
7.2.5 載入頂點法向量 320
7.3 雙面光照 321
7.4 本章小結 324
第8章 獨特的場景渲染技術——
混合與霧 325
8.1 混合技術 325
8.1.1 基本知識 325
8.1.2 源因子和目標因子 326
8.1.3 簡單混合效果的案例 328
8.2 地月系雲層效果的實現 330
8.3 霧 333
8.3.1 霧的原理與優勢 333
8.3.2 霧的簡單實現 334
8.4 本章小結 336
第9章 常用3D開發小技巧 337
9.1 標誌板 337
9.1.1 案例效果與基本原理 337
9.1.2 開發步驟 338
9.2 灰度圖地形 341
9.2.1 基本原理 341
9.2.2 開發前的準備工作 342
9.2.3 普通灰度圖地形 342
9.2.4 過程紋理地形 344
9.2.5 Mipmap地形 347
9.2.6 頂點著色器採樣紋理地形 351
9.3 高真實感地形 353
9.3.1 基本思路 353
9.3.2 地形設計工具EarthSculptor的
使用 354
9.3.3 一個簡單的案例 356
9.4 天空盒與天空穹 358
9.4.1 天空盒 358
9.4.2 天空穹 359
9.4.3 天空盒與天空穹的使用技巧 361
9.5 簡單鏡像效果 361
9.5.1 基本原理 361
9.5.2 基本效果案例 362
9.5.3 升級效果案例 364
9.6 非真實感繪製 366
9.6.1 基本原理與案例效果 366
9.6.2 具體開發步驟 368
9.7 描邊效果的實現 370
9.7.1 沿法線擠出輪廓 370
9.7.2 視空間中擠出 373
9.8 本章小結 374
第10章 兩種測試及片元丟棄 375
10.1 剪裁測試 375
10.1.1 基本原理與核心代碼 375
10.1.2 一個簡單的案例 375
10.2 模板測試 377
10.2.1 基本原理 377
10.2.2 一個簡單的案例 380
10.3 片元丟棄操作 383
10.4 任意剪裁平面 385
10.4.1 基本原理 385
10.4.2 茶壺被任意平面剪裁的
案例 386
10.5 本章小結 387
第11章 頂點著色器的妙用 388
11.1 飄揚的旗幟 388
11.1.1 基本原理 388
11.1.2 開發步驟 389
11.2 扭動的軟糖 392
11.2.1 基本原理 392
11.2.2 開發步驟 393
11.3 風吹椰林場景的開發 394
11.3.1 椰子樹隨風搖擺的
基本原理 395
11.3.2 開發步驟 396
11.4 展翅飛翔的雄鷹 400
11.4.1 基本原理 400
11.4.2 開發步驟 400
11.5 二維扭曲 402
11.5.1 基本原理 403
11.5.2 開發步驟 403
11.6 吹氣膨脹特效 406
11.6.1 基本原理 406
11.6.2 開發步驟 406
11.7 本章小結 407
第12章 片元著色器的妙用 408
12.1 程式紋理技術 408
12.1.1 磚塊著色器 408
12.1.2 沙灘球著色器 410
12.2 數字圖像處理 411
12.2.1 卷積的基本知識 411
12.2.2 平滑過濾 412
12.2.3 邊緣檢測 413
12.2.4 銳化處理 414
12.2.5 浮雕效果 414
12.2.6 圖像漸變 415
12.2.7 卡通渲染 416
12.3 分形著色器 418
12.3.1 曼德布羅集簡介 418
12.3.2 曼德布羅集著色器的實現 419
12.3.3 將曼德布羅集紋理套用到
實際物體上 421
12.3.4 茱莉亞集著色器的實現 421
12.4 3D紋理的妙用 423
12.4.1 噪聲函式的基礎知識 423
12.4.2 柏林噪聲生成工具 426
12.4.3 3D噪聲木紋理茶壺的
開發 427
12.5 體積霧 429
12.5.1 基本原理 429
12.5.2 開發步驟 430
12.6 粒子系統火焰的開發 431
12.6.1 火焰的基本原理 431
12.6.2 普通版火焰 433
12.6.3 點精靈版火焰 441
12.7 本章小結 444
第13章 真實光學環境的模擬 445
13.1 反射環境模擬 445
13.1.1 案例效果與基本原理 445
13.1.2 開發前的準備工作 446
13.1.3 開發步驟 447
13.2 折射環境模擬 449
13.2.1 案例效果與基本原理 449
13.2.2 開發步驟 450
13.3 色散效果模擬 452
13.3.1 案例效果與基本原理 452
13.3.2 開發步驟 452
13.4 菲涅爾效果的模擬 453
13.4.1 案例效果與基本原理 453
13.4.2 開發步驟 454
13.5 凹凸映射 455
13.5.1 案例效果與基本原理 455
13.5.2 法向量紋理圖的生成 456
13.5.3 切向量的計算 458
13.5.4 案例的開發 459
13.6 鏡頭光暈 464
13.6.1 案例效果與基本原理 464
13.6.2 鏡頭光暈案例 465
13.7 投影貼圖 468
13.7.1 案例效果與基本原理 468
13.7.2 開發步驟 470
13.8 繪製到紋理 472
13.8.1 案例效果與基本原理 472
13.8.2 開發步驟 473
13.9 高級鏡像 476
13.9.1 案例效果與基本原理 476
13.9.2 開發步驟 477
13.10 高真實感水面倒影 480
13.10.1 案例效果與基本原理 480
13.10.2 開發步驟 481
13.11 本章小結 484
第14章 陰影及高級光照 485
14.1 多重渲染目標 485
14.1.1 基本知識 485
14.1.2 一個簡單的案例 486
14.2 陰影的重要性 491
14.3 平面陰影 493
14.3.1 案例效果與基本原理 493
14.3.2 開發步驟 494
14.4 陰影映射 497
14.4.1 案例效果與基本原理 497
14.4.2 距離紋理的生成 498
14.4.3 陰影場景的繪製 501
14.5 陰影貼圖 506
14.5.1 案例效果與基本原理 506
14.5.2 開發步驟 507
14.6 靜態光照貼圖 508
14.6.1 案例效果與基本原理 508
14.6.2 使用3ds Max製作靜態
光照貼圖 509
14.6.3 案例的開發 510
14.7 聚光燈高級光源 512
14.7.1 第一種實現的案例效果與
基本原理 513
14.7.2 第一種實現案例的開發
步驟 514
14.7.3 第二種實現的案例效果與
基本原理 515
14.7.4 第二種實現案例的開發
步驟 516
14.8 延遲渲染 517
14.8.1 案例效果與基本原理 517
14.8.2 開發步驟 518
14.9 環境光遮擋 522
14.9.1 基本原理 522
14.9.2 一個簡單的案例 524
14.9.3 效率的提升 526
14.9.4 平滑處理 528
14.10 本章小結 529
第15章 幾種高級著色器特效 530
15.1 運動模糊 530
15.1.1 普通運動模糊 530
15.1.2 高級運動模糊 533
15.2 遮擋透視效果 536
15.2.1 案例效果與基本原理 536
15.2.2 開發步驟 538
15.3 積雪效果 541
15.3.1 案例效果與基本原理 541
15.3.2 開發步驟 541
15.4 背景虛化 542
15.4.1 案例效果與基本原理 542
15.4.2 開發步驟 543
15.5 泛光效果 545
15.5.1 案例效果與基本原理 545
15.5.2 開發步驟 546
15.6 色調映射 548
15.6.1 案例效果與背景知識 548
15.6.2 開發步驟 549
15.7 體繪製 550
15.7.1 案例效果與基本原理 550
15.7.2 開發步驟 551
15.8 本章小結 553
第16章 骨骼動畫 554
16.1 開發骨骼動畫 554
16.1.1 骨骼動畫的基本原理 554
16.1.2 開發步驟 557
16.1.3 機器人模型在地面上運動時的
問題 563
16.2 ms3d骨骼動畫檔案的載入 566
16.2.1 ms3d檔案的格式 566
16.2.2 將3ds Max動畫檔案轉換為
ms3d檔案 570
16.2.3 載入ms3d檔案案例的
開發 574
16.3 自定義格式骨骼動畫的載入 591
16.3.1 bnggdh檔案的格式 591
16.3.2 Bnggdh類 594
16.3.3 載入bnggdh檔案的案例 594
16.4 本章小結 606
第17章 讓套用運行得更流暢——
性能最佳化 607
17.1 著色器的最佳化 607
17.1.1 計算量及計算頻率的
相關問題 607
17.1.2 其他需要注意的問題 608
17.2 紋理圖的最佳化 609
17.3 3D圖形繪製的最佳化 610
17.3.1 CPU階段的最佳化 610
17.3.2 幾何階段的最佳化 611
17.3.3 光柵化階段的最佳化 612
17.4 圖元重啟 612
17.4.1 基本原理 612
17.4.2 一個簡單的案例 613
17.5 幾何體實例渲染 614
17.5.1 基本原理 614
17.5.2 基於實例渲染的土星光環
案例 615
17.6 視錐體剪裁 620
17.6.1 AABB包圍盒的基本原理 620
17.6.2 AABB包圍盒的計算 621
17.6.3 視錐體剪裁的基本思路及
實現策略 622
17.6.4 一個簡單的案例 623
17.7 遮擋查詢 626
17.7.1 相關方法 626
17.7.2 基本原理和實現策略 626
17.7.3 一個簡單的案例 627
17.8 計算著色器的使用 630
17.8.1 基礎知識 630
17.8.2 動態法向量光照水面案例 633
17.9 多執行緒並發渲染 640
17.9.1 基本原理 641
17.9.2 飛船案例的開發 641
17.10 多子通道渲染 646
17.10.1 基本原理 646
17.10.2 一個簡單的案例 647
17.11 細節級別LOD 652
17.12 本章小結 653
第18章 雜項 654
18.1 四元數旋轉 654
18.1.1 基本原理與案例效果 654
18.1.2 開發步驟 656
18.2 3D拾取技術 662
18.2.1 案例效果與基本原理 662
18.2.2 開發步驟 665
18.3 多重採樣抗鋸齒 670
18.3.1 基本知識與案例效果 670
18.3.2 一個簡單的案例 671
18.4 保存螢幕截圖 674
18.5 Windows系統視窗縮放 676
18.6 曲面細分著色器 677
18.6.1 基本知識 677
18.6.2 一個簡單的案例 680
18.7 幾何著色器 685
18.8 macOS、iOS與Linux平台下Vulkan
套用的開發 688
18.8.1 macOS與iOS平台下Vulkan
應用程式的開發 688
18.8.2 Linux平台下Vulkan圖形套用
程式的開發 692
18.9 本章小結 700
第19章 基於Vulkan的3D休閒遊戲——
方塊歷險記 701
19.1 遊戲背景及功能概述 701
19.1.1 遊戲開發背景概述 701
19.1.2 遊戲功能簡介 701
19.2 遊戲的策劃及準備工作 702
19.2.1 遊戲的策劃 703
19.2.2 遊戲的開發準備工作 703
19.3 遊戲的架構 705
19.3.1 各類的簡要介紹 705
19.3.2 遊戲框架簡介 706
19.4 布景相關類 707
19.4.1 3D布景類——My3Dlayer 707
19.4.2 總繪製類——MyDraw 712
19.4.3 攝像機管理類——
CameraUtil 716
19.4.4 3D物體創建類——
Square3D 717
19.5 機關與方塊相關類 718
19.5.1 方塊管理類——
ZFTManager 718
19.5.2 地刺機關管理類——
DiCiBox 721
19.5.3 掉落塊機關管理類——
DiaoLuoManager 722
19.6 遊戲入口及輔助工具類 724
19.6.1 遊戲入口類——main 724
19.6.2 觸控監聽類——Touch2D 726
19.7 著色器的開發 728
19.8 遊戲的最佳化及改進 730

相關詞條

熱門詞條

聯絡我們