游戲引擎原理與實(shí)踐 卷2 高級(jí)技術(shù)
本書共14章,主要講解游戲引擎中的動(dòng)畫、渲染、多線程等高級(jí)技術(shù)。書中的主要內(nèi)容包括骨骼蒙皮模型與動(dòng)畫基礎(chǔ),動(dòng)畫播放和插槽,動(dòng)畫混合,變形動(dòng)畫混合,逆向動(dòng)力學(xué)(IK)與角色,光照渲染的發(fā)展史,渲染器接口,材質(zhì),流程渲染架構(gòu),光照與材質(zhì),后期效果,陰影,多線程,動(dòng)態(tài)緩沖區(qū)和性能分析器。
本書適合游戲開發(fā)人員閱讀。
1.騰訊游戲引擎設(shè)計(jì)師基于多年經(jīng)驗(yàn)和積累的力作;
2.通過(guò)大量示例代碼,講述游戲引擎制作與開發(fā)技術(shù);
3.內(nèi)容集中于游戲引擎中的動(dòng)畫、渲染、多線程等高級(jí)技術(shù);
4.面向有3D游戲開發(fā)經(jīng)驗(yàn)的游戲開發(fā)人員和游戲引擎開發(fā)新手。
程?hào)|哲,游戲引擎開發(fā)工程師,現(xiàn)就職于騰訊公司,曾先后參與了《逆戰(zhàn)》《斗戰(zhàn)神》《無(wú)盡之劍—— 命運(yùn)XBOXONE》《云游戲》《Lucky Night VR》等項(xiàng)目的開發(fā)。他主要負(fù)責(zé)游戲引擎開發(fā)工作,包括開發(fā)騰訊內(nèi)部自研的May引擎和AGE引擎,修改和移植商業(yè)的Unreal Engine。
目錄
第 1章 骨骼蒙皮模型與動(dòng)畫基礎(chǔ) 1
1.1 蒙皮模型與動(dòng)畫原理 1
1.1.1 骨骼 1
1.1.2 蒙皮模型 2
1.1.3 動(dòng)作 3
1.2 蒙皮模型架構(gòu) 4
1.3 FBX蒙皮模型導(dǎo)入 6
1.3.1 骨架處理 6
1.3.2 蒙皮矩陣 8
1.3.3 拆分模型 9
1.3.4 權(quán)重信息 11
1.3.5 計(jì)算最終骨骼矩陣 14
1.3.6 計(jì)算骨架和骨骼模型的
包圍盒 16
1.4 FBX動(dòng)畫導(dǎo)入 20
1.4.1 游戲引擎中的動(dòng)畫數(shù)據(jù)結(jié)構(gòu) 20
1.4.2 從FBX導(dǎo)入游戲引擎格式 21
1.4.3 動(dòng)畫數(shù)據(jù)壓縮 24
1.4.4 把動(dòng)畫導(dǎo)入角色動(dòng)畫集合 29
示例 29
第 2章 動(dòng)畫播放與插槽 30
2.1 動(dòng)畫控制 30
2.1.1 控制相機(jī) 36
2.1.2 播放動(dòng)畫 37
2.1.3 根骨動(dòng)畫 44
2.1.4 根據(jù)動(dòng)畫數(shù)據(jù)計(jì)算骨架包圍盒 47
2.2 插槽 49
練習(xí) 52
示例 52
第3章 動(dòng)畫混合 54
3.1 動(dòng)畫樹架構(gòu) 59
3.2 一個(gè)參數(shù)的動(dòng)畫混合 65
3.3 動(dòng)畫過(guò)渡 75
3.4 兩個(gè)參數(shù)的動(dòng)畫混合 80
3.5 疊加動(dòng)畫 85
3.6 部分混合動(dòng)畫 93
3.7 動(dòng)畫樹實(shí)例詳解 98
練習(xí) 103
示例 103
第4章 變形動(dòng)畫混合 106
4.1 變形動(dòng)畫 106
4.2 FBX變形動(dòng)畫導(dǎo)入引擎 110
4.3 變形動(dòng)畫樹架構(gòu) 118
4.4 一個(gè)參數(shù)的變形動(dòng)畫混合 126
練習(xí) 130
示例 131
第5章 IK與角色 132
5.1 IK* 132
5.2 多姿多彩的角色* 138
練習(xí) 139
第6章 光照渲染的發(fā)展史 140
6.1 前向渲染 141
6.2 延遲渲染 141
6.3 延遲光照 142
6.4 基于塊的延遲渲染 143
6.5 前向增強(qiáng)渲染 144
6.6 總結(jié) 145
示例 146
第7章 渲染器接口 147
7.1 渲染資源 147
7.1.1 VSBind 147
7.1.2 VSBlendState 154
7.1.3 VSDepthStencilState 156
7.1.4 VSSamplerState 157
7.1.5 VSRasterizerState 158
7.1.6 VSRenderState 159
7.1.7 VSTexture 161
7.1.8 VSRenderTarget 163
7.1.9 VSDepthStencil 164
7.1.10 VSDataBuffer 165
7.1.11 VSIndexBuffer 166
7.1.12 VSVertexFormat 166
7.1.13 VSVertexBuffer 167
7.1.14 VSShader 172
7.2 渲染器 174
7.2.1 顯卡特性信息 174
7.2.2 初始化與窗口信息 176
7.2.3 資源設(shè)置加載與銷毀 179
7.2.4 渲染接口 187
7.2.5 其他管理接口 191
第8章 材質(zhì) 193
8.1 材質(zhì)與著色器 193
8.1.1 著色器編譯與參數(shù)傳遞 194
8.1.2 著色器鍵 201
8.1.3 著色器映射表與著色器緩存 202
8.1.4 基于自定義文件的材質(zhì) 205
8.1.5 基于節(jié)點(diǎn)的材質(zhì) 207
8.1.6 材質(zhì)實(shí)例 211
8.1.7 渲染通道 213
8.2 材質(zhì)樹 222
8.2.1 圖形節(jié)點(diǎn)表達(dá)式組合與拆解 222
8.2.2 圖形節(jié)點(diǎn)類 226
8.2.3 生成遍歷圖形節(jié)點(diǎn)的代碼 229
8.2.4 著色器組成與剖析 236
8.2.5 圖形節(jié)點(diǎn)類型 238
8.2.6 頂點(diǎn)著色器代碼生成 250
8.2.7 像素著色器代碼生成 262
8.2.8 著色器中自定義變量設(shè)置 279
練習(xí) 282
第9章 流程渲染架構(gòu) 283
9.1 渲染隊(duì)列 283
9.2 VSSceneRender 288
9.3 渲染目標(biāo)和深度模板管理 294
9.4 VSRenderMethod與
VSViewFamily 299
第 10章 光照與材質(zhì) 318
10.1 VSMaterialSceneRender 318
10.2 VSIndirectRenderPass 321
10.3 VSMaterialPass 326
10.4 自定義光照 342
10.5 光源投射函數(shù) 350
練習(xí) 362
示例 362
第 11章 后期效果 369
11.1 VSPostEffectSceneRender 369
11.2 后期效果集合 372
11.3 后期材質(zhì)效果 381
示例 386
第 12章 陰影 389
12.1 引言 390
12.2 陰影映射 393
12.3 CSM 415
12.4 陰影體 417
12.5 投射體陰影 426
12.6 雙剖面陰影映射 439
示例 442
第 13章 多線程 444
13.1 操作系統(tǒng)中的PV操作 444
13.2 Windows系統(tǒng)中關(guān)于線程的
API 446
13.3 異步加載 451
13.4 多線程更新 461
13.4.1 游戲中代碼多線程化的
常規(guī)方法 462
13.4.2 一種渲染用的多線程
更新架構(gòu) 463
13.4.3 基于Unreal Engine Command
實(shí)現(xiàn)多線程命令分發(fā) 464
13.4.4 多線程更新框架 468
13.4.5 封裝組件到多線程中 476
13.5 多線程渲染 477
13.5.1 多線程渲染框架 478
13.5.2 真正要處理的問(wèn)題 480
13.5.3 封裝渲染命令 485
13.5.4 小結(jié) 490
13.6 紋理流式加載* 492
13.6.1 線程架構(gòu) 493
13.6.2 最大Mip層級(jí)計(jì)算 495
13.7 著色器緩存編譯* 496
13.7.1 材質(zhì)樹編譯 496
13.7.2 自定義文件格式 498
13.7.3 檢測(cè)著色器改變 498
13.7.4 多進(jìn)程編譯著色器 498
13.8 編輯器資源熱更新 499
練習(xí) 504
示例 505
第 14章 動(dòng)態(tài)緩沖區(qū)與性能分析器 506
14.1 動(dòng)態(tài)緩沖區(qū) 506
14.2 性能分析器 519
練習(xí) 526