本書共14章,主要講解游戲引擎中的動畫、渲染、多線程等高級技術(shù)。書中的主要內(nèi)容包括骨骼蒙皮模型與動畫基礎(chǔ),動畫播放和插槽,動畫混合,變形動畫混合,逆向動力學(IK)與角色,光照渲染的發(fā)展史,渲染器接口,材質(zhì),流程渲染架構(gòu),光照與材質(zhì),后期效果,陰影,多線程,動態(tài)緩沖區(qū)和性能分析器。
本書適合游戲開發(fā)人員閱讀。
1.騰訊游戲引擎設(shè)計師基于多年經(jīng)驗和積累的力作;
2.通過大量示例代碼,講述游戲引擎制作與開發(fā)技術(shù);
3.內(nèi)容集中于游戲引擎中的動畫、渲染、多線程等高級技術(shù);
4.面向有3D游戲開發(fā)經(jīng)驗的游戲開發(fā)人員和游戲引擎開發(fā)新手。
程東哲,游戲引擎開發(fā)工程師,現(xiàn)就職于騰訊公司,曾先后參與了《逆戰(zhàn)》《斗戰(zhàn)神》《無盡之劍—— 命運XBOXONE》《云游戲》《Lucky Night VR》等項目的開發(fā)。他主要負責游戲引擎開發(fā)工作,包括開發(fā)騰訊內(nèi)部自研的May引擎和AGE引擎,修改和移植商業(yè)的Unreal Engine。
目錄
第 1章 骨骼蒙皮模型與動畫基礎(chǔ) 1
1.1 蒙皮模型與動畫原理 1
1.1.1 骨骼 1
1.1.2 蒙皮模型 2
1.1.3 動作 3
1.2 蒙皮模型架構(gòu) 4
1.3 FBX蒙皮模型導入 6
1.3.1 骨架處理 6
1.3.2 蒙皮矩陣 8
1.3.3 拆分模型 9
1.3.4 權(quán)重信息 11
1.3.5 計算最終骨骼矩陣 14
1.3.6 計算骨架和骨骼模型的
包圍盒 16
1.4 FBX動畫導入 20
1.4.1 游戲引擎中的動畫數(shù)據(jù)結(jié)構(gòu) 20
1.4.2 從FBX導入游戲引擎格式 21
1.4.3 動畫數(shù)據(jù)壓縮 24
1.4.4 把動畫導入角色動畫集合 29
示例 29
第 2章 動畫播放與插槽 30
2.1 動畫控制 30
2.1.1 控制相機 36
2.1.2 播放動畫 37
2.1.3 根骨動畫 44
2.1.4 根據(jù)動畫數(shù)據(jù)計算骨架包圍盒 47
2.2 插槽 49
練習 52
示例 52
第3章 動畫混合 54
3.1 動畫樹架構(gòu) 59
3.2 一個參數(shù)的動畫混合 65
3.3 動畫過渡 75
3.4 兩個參數(shù)的動畫混合 80
3.5 疊加動畫 85
3.6 部分混合動畫 93
3.7 動畫樹實例詳解 98
練習 103
示例 103
第4章 變形動畫混合 106
4.1 變形動畫 106
4.2 FBX變形動畫導入引擎 110
4.3 變形動畫樹架構(gòu) 118
4.4 一個參數(shù)的變形動畫混合 126
練習 130
示例 131
第5章 IK與角色 132
5.1 IK* 132
5.2 多姿多彩的角色* 138
練習 139
第6章 光照渲染的發(fā)展史 140
6.1 前向渲染 141
6.2 延遲渲染 141
6.3 延遲光照 142
6.4 基于塊的延遲渲染 143
6.5 前向增強渲染 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é)點的材質(zhì) 207
8.1.6 材質(zhì)實例 211
8.1.7 渲染通道 213
8.2 材質(zhì)樹 222
8.2.1 圖形節(jié)點表達式組合與拆解 222
8.2.2 圖形節(jié)點類 226
8.2.3 生成遍歷圖形節(jié)點的代碼 229
8.2.4 著色器組成與剖析 236
8.2.5 圖形節(jié)點類型 238
8.2.6 頂點著色器代碼生成 250
8.2.7 像素著色器代碼生成 262
8.2.8 著色器中自定義變量設(shè)置 279
練習 282
第9章 流程渲染架構(gòu) 283
9.1 渲染隊列 283
9.2 VSSceneRender 288
9.3 渲染目標和深度模板管理 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
練習 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
實現(xiàn)多線程命令分發(fā) 464
13.4.4 多線程更新框架 468
13.4.5 封裝組件到多線程中 476
13.5 多線程渲染 477
13.5.1 多線程渲染框架 478
13.5.2 真正要處理的問題 480
13.5.3 封裝渲染命令 485
13.5.4 小結(jié) 490
13.6 紋理流式加載* 492
13.6.1 線程架構(gòu) 493
13.6.2 最大Mip層級計算 495
13.7 著色器緩存編譯* 496
13.7.1 材質(zhì)樹編譯 496
13.7.2 自定義文件格式 498
13.7.3 檢測著色器改變 498
13.7.4 多進程編譯著色器 498
13.8 編輯器資源熱更新 499
練習 504
示例 505
第 14章 動態(tài)緩沖區(qū)與性能分析器 506
14.1 動態(tài)緩沖區(qū) 506
14.2 性能分析器 519
練習 526