本书详细阐述了与实时阴影技术相关的高效解决方案及相应的数据结构和算法,主要包括基本阴影技法、阴影图的走样、阴影图的采样、硬阴影的滤波、基于图像的软阴影算法、基于几何体的软阴影算法、基于图像的透明、体积阴影、高级阴影技巧等内容。此外,本书还提供了相应的算法、代码以及伪代码,以帮助读者进一步理解相关方案的实现过程。
本书适合作为高等院校计算机及相关专业的教材和教学参考书,也可作为相关开发人员的自学教材和参考手册。
Author(s): Elmar Eisemann,Michael Schwarz,Ulf Assarsson,王 锐,苏 敏
Publisher: 清华大学出版社
Year: 2013
Language: Chinese
Pages: 344
Tags: 计算机图形学;游戏引擎;阴影;游戏引擎能力;游戏;图形学
第1章 简介......Page 21
1.1 定义......Page 22
1.1.1 术语......Page 24
1.1.2 渲染方程......Page 26
1.1.3 阴影计算的简化形式......Page 29
1.2 阴影的重要性......Page 31
1.3 阴影计算的难点......Page 34
1.4 概述......Page 37
1.5 读者须知......Page 38
第2章 基本阴影技法......Page 39
2.1.1 平面投影阴影......Page 40
2.1.2 阴影纹理......Page 44
2.2 阴影映射......Page 49
2.2.1 基本算法......Page 50
2.2.2 泛光灯的阴影图......Page 51
2.2.3 深度偏移(Depth Bias)......Page 52
2.2.4 避免过于依靠偏移值......Page 54
2.2.5 走样问题(Aliasing)......Page 57
2.2.6 实现标准的阴影映射方法......Page 58
2.2.7 大规模场景的阴影映射......Page 59
2.3 阴影体......Page 61
2.3.1 最朴素的阴影体算法......Page 62
2.3.2 阴影体块的构建......Page 63
2.4.1 假设......Page 65
2.4.2 概述......Page 66
2.4.3 模板计数的实现——Z-Pass......Page 67
2.4.4 Z-Fail......Page 69
2.4.5 Z-Pass和Z-Fail的替代方法......Page 71
2.4.6 基于轮廓线的通用模型阴影体算法......Page 74
2.4.7 高级的改进方案......Page 80
2.5 透明度......Page 88
2.6 总结......Page 89
3.1 阴影映射与信号重建......Page 90
3.2.1 采样误差的定义......Page 95
3.2.2 几何解释......Page 97
3.2.3 走样的组成......Page 99
3.3 重采样误差......Page 100
4.1 匹配(Fitting)......Page 102
4.2.1 包装算法实战......Page 106
4.2.2 计算包装的优化参数......Page 110
4.2.3 顶部灯光透视包装的存储因子......Page 116
4.2.4 顶部平行光的优化参数化......Page 118
4.2.5 平面最优的透视包装......Page 120
4.3.1 Z分割(Z-Partitioning)......Page 121
4.3.3 包装算法与全局分割的结合......Page 125
4.3.4 分割——误差分析......Page 130
4.4.1 迭代层次的精练(Refinement)......Page 132
4.4.2 直接层次计算......Page 134
4.4.3 比较......Page 138
4.5 视口采样映射(View-Sample Mapping)......Page 139
4.5.1 硬件实现......Page 140
4.5.3 超级采样(Supersampling)......Page 142
4.6.2 轮廓阴影映射(Silhouette Shadow Maps)......Page 143
4.6.3 阴影图存储的替代方案......Page 144
4.8 实例......Page 145
5.1 滤波和阴影图......Page 147
5.1.3 定义参考值:Percentage-Closer Filtering......Page 148
5.1.4 PCF的实现......Page 149
5.2.2 降低重采样误差:重建/频带限制滤波......Page 152
5.2.3 滤波与软阴影......Page 153
5.3.1 预计算滤波的思想——线性信号处理与统计......Page 154
5.3.2 方差阴影图(Variance Shadow Maps)......Page 157
5.3.3 分层方差阴影图(Layered Variance Shadow Maps)......Page 159
5.3.4 卷积阴影图(Convolution Shadow Maps)......Page 160
5.3.5 指数阴影图(Exponential Shadow Maps)......Page 163
5.3.6 比较......Page 165
5.4 总结......Page 167
6.1 概述......Page 168
6.1.1 名词与属性......Page 169
6.1.2 方法的分类......Page 171
6.2.1 半影宽度的估计值......Page 172
6.2.2 遮挡体逆投影......Page 173
6.2.3 遮挡体的融合......Page 175
6.2.4 光照可见性的点采样......Page 176
6.3 参考解决方案......Page 177
6.4.1 光照空间的搜索......Page 180
6.4.2 屏幕空间的搜索......Page 182
6.5.1 投影的软阴影纹理......Page 183
6.5.2 Fractional-Disk软阴影......Page 184
6.5.3 Percentage-Closer软阴影......Page 185
6.5.4 加速适配的滤波过程......Page 188
6.5.5 加速遮挡体搜索......Page 189
6.5.6 屏幕空间的方法......Page 191
6.6.1 基于卷积的软阴影纹理......Page 192
6.6.2 遮挡体纹理......Page 193
6.7 遮挡体重建和反投影......Page 195
6.7.1 基本实现......Page 196
6.7.2 通过遮挡体位掩码实现可见性判断......Page 198
6.7.3 遮挡体的近似......Page 200
6.7.4 使用多尺度(Multiscale)的方式加速处理......Page 203
6.7.5 适配精确度的加速方法......Page 206
6.8 使用多幅深度图......Page 208
6.9 总结......Page 210
第7章 基于几何体的软阴影算法......Page 212
7.1.1 单采样的软阴影(Single-Sample Soft Shadows)......Page 213
7.1.3 半影图(Penumbra Maps)......Page 214
7.1.4 Smoothies......Page 216
7.2.1 裙边缓存......Page 217
7.2.3 软阴影遮挡相机......Page 218
7.3.1 概述......Page 219
7.3.2 半影楔......Page 220
7.3.3 基本方法......Page 221
7.3.4 改进方案......Page 224
7.4.1 光照空间的光栅化......Page 226
7.4.2 思想......Page 227
7.4.3 基于三角形的方法......Page 228
7.4.4 基于轮廓线的方法......Page 235
7.5 权衡......Page 236
7.6 软阴影算法的总结......Page 237
8.1 深阴影贴图......Page 239
8.1.1 光线在半透物体中的衰减......Page 240
8.1.2 从眼睛到透明面的累积检测......Page 241
8.2.1 基于重建的方法......Page 242
8.2.2 基于图层的方法......Page 245
8.2.3 基于函数的方法......Page 252
8.3 总结......Page 254
9.1 在均匀介质中的实时单散射......Page 255
9.2 光线跟踪阴影图......Page 256
9.2.1 空气光的近似实现......Page 257
9.2.3 Ray-Marching实现方法......Page 258
9.3 基于卷积阴影的方法......Page 260
9.4 总结......Page 262
10.1 多重着色(Multicolored)的光源......Page 263
10.1.1 使用连续可见性计算的纹理光源......Page 264
10.1.2 使用遮挡位掩码(Occlusion Bitmask)的纹理光源......Page 265
10.1.3 有效位的计数......Page 266
10.2 多重采样反走样......Page 267
10.3 体素(Voxel)与阴影......Page 268
10.3.1 即时的体素化......Page 269
10.3.2 基于体素的场景表达......Page 272
10.4 光线跟踪(RayTracing)阴影......Page 276
10.5 环境光照......Page 277
10.5.1 环境图阴影......Page 278
10.5.2 环境光遮蔽(Ambient Occlusion)......Page 279
10.6 预计算的辐射度传递(Precomputed Radiance Transfer)......Page 285
10.6.2 球体遮挡体近似......Page 287
11.1.1 精确的阴影......Page 289
11.2 滤波的硬阴影......Page 290
11.3.1 精确的阴影......Page 291
11.4 高级算法......Page 292
11.5 明天会更好......Page 293
参考文献......Page 294
A.1 渲染......Page 323
A.2 逐片元的处理——裁剪与混合......Page 326
A.3 帧缓存(Framebuffer)......Page 327
A.5 硬件......Page 328
附录B 图形API概述......Page 330
B.1 变换矩阵......Page 331
B.1.1 左手/右手坐标系......Page 332
B.1.3 投影矩阵......Page 333
B.2 状态......Page 335
B.2.1 深度相关的状态......Page 336
B.2.3 融合......Page 337
B.3 帧缓存与渲染目标......Page 338
B.4 纹理采样......Page 339
B.5 着色语言......Page 340
C.1.1 标记法......Page 341
C.1.3 镜面反射(Specular)表面......Page 342
C.2 入射辐射度的近似计算......Page 344
D.1 mipmap......Page 346
D.1.2 滤波......Page 347
D.2.1 构建......Page 349
D.2.2 多尺度图......Page 350
D.2.3 滤波......Page 351
D.3.1 构建......Page 352
D.4 总结......Page 356
E.1.1 定义......Page 357
E.1.2 实际情况的考量......Page 358
E.2.1 空间的方法和几何相关的模糊......Page 359
E.2.2 高级滤波方法......Page 361
E.3 总结......Page 364
附录F 符号......Page 365