目录
第 1章 骨骼蒙皮模型与动画基础 1
1.1 蒙皮模型与动画原理 1
1.1.1 骨骼 1
1.1.2 蒙皮模型 2
1.1.3 动作 3
1.2 蒙皮模型架构 4
1.3 FBX蒙皮模型导入 6
1.3.1 骨架处理 6
1.3.2 蒙皮矩阵 8
1.3.3 拆分模型 9
1.3.4 权重信息 11
1.3.5 计算最终骨骼矩阵 14
1.3.6 计算骨架和骨骼模型的
包围盒 16
1.4 FBX动画导入 20
1.4.1 游戏引擎中的动画数据结构 20
1.4.2 从FBX导入游戏引擎格式 21
1.4.3 动画数据压缩 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 根据动画数据计算骨架包围盒 47
2.2 插槽 49
练习 52
示例 52
第3章 动画混合 54
3.1 动画树架构 59
3.2 一个参数的动画混合 65
3.3 动画过渡 75
3.4 两个参数的动画混合 80
3.5 叠加动画 85
3.6 部分混合动画 93
3.7 动画树实例详解 98
练习 103
示例 103
第4章 变形动画混合 106
4.1 变形动画 106
4.2 FBX变形动画导入引擎 110
4.3 变形动画树架构 118
4.4 一个参数的变形动画混合 126
练习 130
示例 131
第5章 IK与角色 132
5.1 IK* 132
5.2 多姿多彩的角色* 138
练习 139
第6章 光照渲染的发展史 140
6.1 前向渲染 141
6.2 延迟渲染 141
6.3 延迟光照 142
6.4 基于块的延迟渲染 143
6.5 前向增强渲染 144
6.6 总结 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 资源设置加载与销毁 179
7.2.4 渲染接口 187
7.2.5 其他管理接口 191
第8章 材质 193
8.1 材质与着色器 193
8.1.1 着色器编译与参数传递 194
8.1.2 着色器键 201
8.1.3 着色器映射表与着色器缓存 202
8.1.4 基于自定义文件的材质 205
8.1.5 基于节点的材质 207
8.1.6 材质实例 211
8.1.7 渲染通道 213
8.2 材质树 222
8.2.1 图形节点表达式组合与拆解 222
8.2.2 图形节点类 226
8.2.3 生成遍历图形节点的代码 229
8.2.4 着色器组成与剖析 236
8.2.5 图形节点类型 238
8.2.6 顶点着色器代码生成 250
8.2.7 像素着色器代码生成 262
8.2.8 着色器中自定义变量设置 279
练习 282
第9章 流程渲染架构 283
9.1 渲染队列 283
9.2 VSSceneRender 288
9.3 渲染目标和深度模板管理 294
9.4 VSRenderMethod与
VSViewFamily 299
第 10章 光照与材质 318
10.1 VSMaterialSceneRender 318
10.2 VSIndirectRenderPass 321
10.3 VSMaterialPass 326
10.4 自定义光照 342
10.5 光源投射函数 350
练习 362
示例 362
第 11章 后期效果 369
11.1 VSPostEffectSceneRender 369
11.2 后期效果集合 372
11.3 后期材质效果 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 操作系统中的PV操作 444
13.2 Windows系统中关于线程的
API 446
13.3 异步加载 451
13.4 多线程更新 461
13.4.1 游戏中代码多线程化的
常规方法 462
13.4.2 一种渲染用的多线程
更新架构 463
13.4.3 基于Unreal Engine Command
实现多线程命令分发 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 小结 490
13.6 纹理流式加载* 492
13.6.1 线程架构 493
13.6.2 最大Mip层级计算 495
13.7 着色器缓存编译* 496
13.7.1 材质树编译 496
13.7.2 自定义文件格式 498
13.7.3 检测着色器改变 498
13.7.4 多进程编译着色器 498
13.8 编辑器资源热更新 499
练习 504
示例 505
第 14章 动态缓冲区与性能分析器 506
14.1 动态缓冲区 506
14.2 性能分析器 519
练习 526