第1章 简介 1
1.1 定义 2
1.1.1 术语 4
1.1.2 渲染方程 6
1.1.3 阴影计算的简化形式 9
1.2 阴影的重要性 11
1.3 阴影计算的难点 14
1.4 概述 17
1.5 读者须知 18
第2章 基本阴影技法 19
2.1 投影阴影 20
2.1.1 平面投影阴影 20
2.1.2 阴影纹理 24
2.1.3 讨论 29
2.2 阴影映射 29
2.2.1 基本算法 30
2.2.2 泛光灯的阴影图 31
2.2.3 深度偏移(Depth Bias) 32
2.2.4 避免过于依靠偏移值 34
2.2.5 走样问题(Aliasing) 37
2.2.6 实现标准的阴影映射方法 38
2.2.7 大规模场景的阴影映射 39
2.3 阴影体 41
2.3.1 最朴素的阴影体算法 42
2.3.2 阴影体块的构建 43
2.4 模板阴影体(Stencil Shadow Volume) 45
2.4.1 假设 45
2.4.2 概述 46
2.4.3 模板计数的实现——Z-Pass 47
2.4.4 Z-Fail 49
2.4.5 Z-Pass和Z-Fail的替代方法 51
2.4.6 基于轮廓线的通用模型阴影体算法 54
2.4.7 高级的改进方案 60
2.5 透明度 68
2.6 总结 69
第3章 阴影图的走样 70
3.1 阴影映射与信号重建 70
3.2 初始采样误差——欠采样 75
3.2.1 采样误差的定义 75
3.2.2 几何解释 77
3.2.3 走样的组成 79
3.2.4 存储因子 80
3.3 重采样误差 80
第4章 阴影图的采样 82
4.1 匹配(Fitting) 82
4.2 包装(Warping) 86
4.2.1 包装算法实战 86
4.2.2 计算包装的优化参数 90
4.2.3 顶部灯光透视包装的存储因子 96
4.2.4 顶部平行光的优化参数化 98
4.2.5 平面最优的透视包装 100
4.3 全局分割(Global Partitioning) 101
4.3.1 Z分割(Z-Partitioning) 101
4.3.2 视锥体平面的分割 105
4.3.3 包装算法与全局分割的结合 105
4.3.4 分割——误差分析 110
4.4 自适应的分割 112
4.4.1 迭代层次的精练(Refinement) 112
4.4.2 直接层次计算 114
4.4.3 比较 118
4.5 视口采样映射(View-Sample Mapping) 119
4.5.1 硬件实现 120
4.5.2 透明 122
4.5.3 超级采样(Supersampling) 122
4.6 阴影图的重建 123
4.6.1 前向阴影映射(Forward Shadow Mapping) 123
4.6.2 轮廓阴影映射(Silhouette Shadow Maps) 123
4.6.3 阴影图存储的替代方案 124
4.7 临时重投影 125
4.8 实例 125
第5章 硬阴影的滤波 127
5.1 滤波和阴影图 127
5.1.1 滤波的标记 128
5.1.2 不正确的方法:模糊阴影图 128
5.1.3 定义参考值:Percentage-Closer Filtering 128
5.1.4 PCF的实现 129
5.2 滤波的应用程序 132
5.2.1 平滑/模糊的阴影 132
5.2.2 降低重采样误差:重建/频带限制滤波 132
5.2.3 滤波与软阴影 133
5.3 较大滤波核的预计算 134
5.3.1 预计算滤波的思想——线性信号处理与统计 134
5.3.2 方差阴影图(Variance Shadow Maps) 137
5.3.3 分层方差阴影图(Layered Variance Shadow Maps) 139
5.3.4 卷积阴影图(Convolution Shadow Maps) 140
5.3.5 指数阴影图(Exponential Shadow Maps) 143
5.3.6 比较 145
5.4 总结 147
第6章 基于图像的软阴影算法 148
6.1 概述 148
6.1.1 名词与属性 149
6.1.2 方法的分类 151
6.1.3 本章导读 152
6.2 基础 152
6.2.1 半影宽度的估计值 152
6.2.2 遮挡体逆投影 153
6.2.3 遮挡体的融合 155
6.2.4 光照可见性的点采样 156
6.3 参考解决方案 157
6.4 带有半影的增强硬阴影 160
6.4.1 光照空间的搜索 160
6.4.2 屏幕空间的搜索 162
6.5 模糊硬阴影测试的结果 163
6.5.1 投影的软阴影纹理 163
6.5.2 Fractional-Disk软阴影 164
6.5.3 Percentage-Closer软阴影 165
6.5.4 加速适配的滤波过程 168
6.5.5 加速遮挡体搜索 169
6.5.6 屏幕空间的方法 171
6.6 平面遮挡体图像的滤波 172
6.6.1 基于卷积的软阴影纹理 172
6.6.2 遮挡体纹理 173
6.7 遮挡体重建和反投影 175
6.7.1 基本实现 176
6.7.2 通过遮挡体位掩码实现可见性判断 178
6.7.3 遮挡体的近似 180
6.7.4 使用多尺度(Multiscale)的方式加速处理 183
6.7.5 适配精确度的加速方法 186
6.8 使用多幅深度图 188
6.9 总结 190
第7章 基于几何体的软阴影算法 192
7.1 生成外层半影来模拟阴影 193
7.1.1 单采样的软阴影(Single-Sample Soft Shadows) 193
7.1.2 软平面阴影(Soft Planar Shadows Using Plateaus) 194
7.1.3 半影图(Penumbra Maps) 194
7.1.4 Smoothies 196
7.2 内层和外层半影 197
7.2.1 裙边缓存 197
7.2.2 多层阴影翼 198
7.2.3 软阴影遮挡相机 198
7.3 软阴影体(Soft Shadow Volumes) 199
7.3.1 概述 199
7.3.2 半影楔 200
7.3.3 基本方法 201
7.3.4 改进方案 204
7.4 视口采样映射(View-Sample Mapping) 206
7.4.1 光照空间的光栅化 206
7.4.2 思想 207
7.4.3 基于三角形的方法 208
7.4.4 基于轮廓线的方法 215
7.5 权衡 216
7.6 软阴影算法的总结 217
第8章 基于图像的透明 219
8.1 深阴影贴图 219
8.1.1 光线在半透物体中的衰减 220
8.1.2 从眼睛到透明面的累积检测 221
8.2 透射率函数的近似 222
8.2.1 基于重建的方法 222
8.2.2 基于图层的方法 225
8.2.3 基于函数的方法 232
8.3 总结 234
第9章 体积阴影 235
9.1 在均匀介质中的实时单散射 235
9.2 光线跟踪阴影图 236
9.2.1 空气光的近似实现 237
9.2.2 空气光的作用 238
9.2.3 Ray-Marching实现方法 238
9.3 基于卷积阴影的方法 240
9.4 总结 242
第10章 高级阴影技巧 243
10.1 多重着色(Multicolored)的光源 243
10.1.1 使用连续可见性计算的纹理光源 244
10.1.2 使用遮挡位掩码(Occlusion Bitmask)的纹理光源 245
10.1.3 有效位的计数 246
10.2 多重采样反走样 247
10.3 体素(Voxel)与阴影 248
10.3.1 即时的体素化 249
10.3.2 基于体素的场景表达 252
10.3.3 总结 256
10.4 光线跟踪(Ray Tracing)阴影 256
10.5 环境光照 257
10.5.1 环境图阴影 258
10.5.2 环境光遮蔽(Ambient Occlusion) 259
10.5.3 总结 265
10.6 预计算的辐射度传递(Precomputed Radiance Transfer) 265
10.6.1 预计算阴影域 267
10.6.2 球体遮挡体近似 267
第11章 总结 269
11.1 硬阴影 269
11.1.1 精确的阴影 269
11.1.2 近似精确的阴影 270
11.1.3 近似的阴影 270
11.2 滤波的硬阴影 270
11.3 软阴影 271
11.3.1 精确的阴影 271
11.3.2 近似的阴影 272
11.4 高级算法 272
11.5 明天会更好 273
参考文献 274
附录A 图形流水线概览 303
A.1 渲染 303
A.2 逐片元的处理——裁剪与混合 306
A.3 帧缓存(Framebuffer) 307
A.4 几何体的表达 308
A.5 硬件 308
附录B 图形API概述 310
B.1 变换矩阵 311
B.1.1 左手/右手坐标系 312
B.1.2 观察矩阵 313
B.1.3 投影矩阵 313
B.2 状态 315
B.2.1 深度相关的状态 316
B.2.2 模板测试 317
B.2.3 融合 317
B.3 帧缓存与渲染目标 318
B.4 纹理采样 319
B.5 着色语言 320
附录C 着色方法简述 321
C.1 着色的分析模型 321
C.1.1 标记法 321
C.1.2 漫反射(Diffuse)表面 322
C.1.3 镜面反射(Specular)表面 322
C.2 入射辐射度的近似计算 324
附录D 快速GPU滤波技术 326
D.1 mipmap 326
D.1.1 构建 327
D.1.2 滤波 327
D.2 N-buffer与多尺度图(Multiscale Map) 329
D.2.1 构建 329
D.2.2 多尺度图 330
D.2.3 滤波 331
D.3 Summed-area table 332
D.3.1 构建 332
D.3.2 滤波 336
D.4 总结 336
附录E 延迟着色(Deferred Shading)与升采样(Upsampling) 337
E.1 延迟着色 337
E.1.1 定义 337
E.1.2 实际情况的考量 338
E.1.3 案例 339
E.2 升采样 339
E.2.1 空间的方法和几何相关的模糊 339
E.2.2 高级滤波方法 341
E.3 总结 344
附录F 符号 345
· · · · · · (
收起)