第1章光线跟踪器和程序设计 1
1.1通用解决方案 1
1.2继承 2
1.3语言 2
1.4建立场景 3
1.5用户接口 3
1.6基础光线跟踪器 4
1.7开发光线跟踪器 4
1.8单精度浮点数和双精度浮点数 5
1.9效率问题 5
1.9.1简约之美 5
1.9.2数据存储 6
1.9.3按引用传递 6
1.9.4避免返回引用 6
1.9.5避免使用浮点型除法操作 7
1.9.6使用内联函数 7
1.9.7工具类 7
1.10代码风格 7
1.10.1标识符 7
1.10.2实体数据类型 8
1.10.3封装 8
1.10.4函数签名 8
1.10.5改变函数签名 9
1.10.6纯虚函数和虚函数 9
1.10.7文件结构 9
1.10.8项目结构 10
1.11调试 10
1.11.1熟悉调试器 10
1.11.2对单像素图像实施光线跟踪 10
1.11.3跟踪像素坐标 10
1.11.4使用cout语句 10
1.11.5内存分配 11
1.11.6简化操作 11
1.11.7透明度 11
1.11.8图像的使用 11
进一步阅读 11
第2章数学知识 13
本章目标 13
2.1集合 13
2.1.1集合定义和集合符号 13
2.1.2子集 14
2.1.3有序偶和集合的笛卡儿积 14
2.2区间 14
2.3角度 15
2.3.1度量方法 15
2.3.2角度制和弧度制 16
2.4三角学 16
2.4.1定义 16
2.4.2三角关系 16
2.5坐标系统 17
2.5.1 3D笛卡儿坐标 17
2.5.2圆柱坐标系统 18
2.5.3球体坐标 18
2.6向量 19
2.6.1向量的定义及其表示方法 19
2.6.2向量计算 20
2.7顶点 21
2.8法线 22
2.9数学表面 23
2.9.1隐式表面 23
2.9.2参数表面 25
2.9.3切平面 27
2.10立体角 28
2.10.1定义 28
2.10.2球体坐标中的立体角 28
2.10.3半球体积分 29
2.11随机数 30
2.12正交基和正交坐标系统 32
2.12.1定义 32
2.12.2构造正交基 32
2.12.3正交坐标系统 33
2.12.4使用正交坐标系统 34
2.1.3等比数列 34
2.1.4?()函数 34
提示和讨论 35
进一步阅读 35
问题 36
练习 36
第3章光线跟踪器的基本要素 37
本章目标 37
3.1光线跟踪计算的工作原理 38
3.2场景世界 40
3.3光线 40
3.4光线-对象相交测试 41
3.4.1概述 41
3.4.2光线和隐式表面 42
3.4.3几何对象 43
3.4.4平面 44
3.4.5球体 46
3.5颜色值 49
3.6基本的光线跟踪器 51
3.6.1工作类 52
3.6.2主函数 53
3.6.3视平面 53
3.6.4像素和图像 55
3.6.5build()函数 56
3.6.6渲染场景 57
3.7跟踪器 58
3.8颜色显示 59
3.9对多个对象实施光线跟踪 60
提示和讨论 63
进一步阅读 63
问题 64
练习 65
第4章抗锯齿技术 66
本章目标 66
4.1锯齿效果 67
4.2解决方案 68
4.2.1增加图像的分辨率 68
4.2.2均匀采样 68
4.2.3随机采样 70
4.2.4抖动采样 71
4.3细节抗锯齿技术 71
4.4滤波 72
进一步阅读 73
问题 73
练习 73
第55章采样技术 74
本章目标 74
5.1采样框架 75
5.2良好采样技术所具备的特征 81
5.3采样模式 82
5.3.1随机采样 82
5.3.2抖动采样 82
5.3.3n-Rooks采样 83
5.3.4多重抖动采样 84
5.3.5Hammersley采样 85
5.4混混合索引 87
5.5渲染结果 89
提示和讨论 93
进一步阅读 94
问题 94
练习 95
第6章圆采样映射 96
本章目标 96
6.1选择性采样 96
6.2同心映射 97
进一步阅读 100
问题 100
练习 100
第7章半球体采样映射 101
本章目标 101
7.1余弦分布 101
7.2映射理论 103
7.3实现 104
7.4操作结果 104
进一步阅读 105
练习 106
第8章投影视图 107
本章目标 107
8.1定义 108
8.2透视投影的特征 109
8.3轴对齐透视图 113
8.4实现方法 114
8.5处理结果 115
8.6透视偏差 117
进一步阅读 118
问题 118
练习 119
第9章视见系统的应用 121
本章目标 121
9.1描述 121
9.2用户接口 122
9.3视见坐标系统 123
9.4光线计算 125
9.5实现 126
9.6示例 129
9.7缩放 130
9.8倾斜角 131
9.9异常 131
进一步阅读 132
问题 132
练习 133
第10章景深 134
本章目标 134
10.1薄透镜理论 134
10.2模拟 136
10.3实现 139
10.4结果 141
进一步阅读 144
问题 144
练习 145
第11章非线性投影 146
本章目标 146
11.1鱼眼投影 147
11.1.1理论概述 147
11.1.2实现 150
11.1.3结果 152
11.2球体全景投影 154
11.2.1理论概述 154
11.2.2实现 155
11.2.3结果 156
进一步阅读 158
问题 158
练习 158
第12章立体视觉 161
本章目标 161
12.1视差问题 162
12.2相机的布局 164
12.3立体相机 166
12.4立体图像对的显示和观察 167
12.5实现 168
12.6结果 171
提示和讨论 174
进一步阅读 174
问题 174
练习 175
第13章理论基础 176
本章目标 176
13.1辐射量 177
13.2入射辐射度的角度依赖性 178
13.3光线方向及其标记符号 179
13.4辐射度和入射辐射度 180
13.5光谱表示法 180
13.6BRDFs 181
13.6.1定义 181
13.6.2反射辐射度 182
13.6.3BRDFs的特征 182
13.7反射率 182
13.8完全漫反射BRDF 183
13.9BRDF类 184
13.9.1类的组织方式以及成员函数 184
13.9.2Lambertian类的实现 186
13.10光照渲染模型 187
13.10.1半球模型 187
13.10.2面积模型 188
13.10.3解决方案 190
13.11MonteCarlo积分 191
131.1.1基础知识概述 191
131.1.2方差 193
131.1.3重要性采样 193
进一步阅读 195
练习 196
第14章光照和材质 197
本章目标 197
14.1光照和反射 198
14.2光照 200
14.2.1环境光照 201
14.2.2方向性光照 201
14.2.3点光源 203
14.3光照类 206
14.4World类和ShadeRec类 208
14.4.1World类 208
14.4.2ShadeRec类 209
14.5光线跟踪器类 211
14.6漫反射着色 213
14.6.1基本公式 213
14.6.2双面着色 214
14.7Material类 216
14.8示例 218
14.9溢色处理 220
进一步阅读 222
问题 222
练习 224
第15章镜面反射 225
本章目标 225
15.1光照模型 225
15.2实现 228
15.3视角依赖性 231
15.4有色高光 231
15.5高光和颜色上溢 232
15.6其他反射模型 233
进一步阅读 234
问题 234
练习 235
第16章阴影 237
本章目标 237
16.1阴影的重要性 237
16.2阴影的定义 238
16.3实现 240
16.4?系数 243
16.5示例 245
16.6计算开销 246
16.7阴影选项 246
提示和讨论 247
进一步阅读 247
问题 247
练习 248
第17章环境遮挡 250
本章目标 250
17.1建模过程 251
17.2实现 252
17.3一个简单的场景 254
17.4双面对象 259
17.5其他场景 260
提示和讨论 261
进一步阅读 261
问题 262
练习 263
第18章区域光照 264
本章目标 264
18.1区域光源体系结构 265
18.2直接渲染 266
18.3直接光照计算 267
18.4区域光照跟踪器 267
18.5自发光材质 268
18.6其他类型的材质 269
18.7几何对象类 270
18.8AreaLight类 271
18.9示例图像 274
18.10环境光照 276
提示和讨论 281
进一步阅读 282
问题 282
练习 283
第19章光线与对象间的相交计算 286
本章目标 286
19.1包围盒 287
19.2轴对齐盒体 291
19.3三角形 293
19.3.1三角形的定义 293
19.3.2相交测试 294
19.4其他对象 298
19.4.1圆形对象 298
19.4.2矩形对象 298
19.5通用对象 300
19.5.1目的 300
19.5.2通用球体、圆形以及矩形对象 301
19.5.3通用开放式圆柱体 301
19.5.4通用圆环体 302
19.5.5通用对象和默认对象 307
19.6着色问题 307
19.7局部对象 307
19.7.1基本理论 307
19.7.2局部圆柱体 308
19.7.3局部球体 308
19.7.4局部圆环体 310
19.7.5角度范围 311
19.8组合对象 312
19.8.1组合对象的优势 312
19.8.2实现 312
19.8.3实体圆柱体 314
进一步阅读 316
问题 316
练习 316
第20章仿射变换 321
本章目标 321
20.1 2D变换 322
20.1.1缩放操作 322
20.1.2旋转操作 323
20.1.3剪切操作 324
20.1.4镜像变换 325
20.1.5平移变换 325
20.2 3D齐次坐标 325
20.3 3D变换 326
20.3.1平移变换 326
20.3.2缩放变换 327
20.3.3旋转变换 328
20.3.4镜像变换 328
20.3.5剪切变换 329
20.4组合变换 329
20.5逆变换 332
20.5.1独特的逆变换 332
20.5.2组合逆变换 333
20.6任意直线的旋转变换 333
进一步阅读 335
问题 336
练习 336
第21章对象变换 337
本章目标 337
21.1变换对象的相交计算 337
21.1.1理论概述 337
21.1.2顶点和向量的变换操作 339
21.1.3程序设计 339
21.1.4光线与转换对象间的相交计算 340
21.1.5变换矩阵的逆矩阵 340
21.1.6示例 341
21.2法线变换 341
21.2.1理论概述 341
21.2.2程序设计 342
21.3对象的直接变换 342
21.4对象的实例化 343
21.5圆角对象 348
提示和讨论 351
进一步阅读 351
问题 352
练习 353
第22章规则栅格 356
本章目标 356
22.1理论概述 357
22.2构建栅格 358
22.3遍历 365
22.4测试 369
22.4.1测试建议 369
22.4.2 8盒体测试 369
22.4.3随机球体 370
22.4.4其他问题 373
22.5栅格对象和变换对象 373
22.6与BVHs进行比较 376
进一步阅读 376
问题 377
练习 378
第23章三角形网格 380
本章目标 380
23.1球体的嵌格操作 381
23.1.1固定着色 381
23.1.2平滑着色 382
23.2网格数据结构 383
23.3PLY文件 386
23.4示例 388
23.4.1两个三角形 388
23.4.2计算法线 389
23.4.3多重网格对象 391
23.5层次实例化栅格对象 392
进一步阅读 394
问题 394
练习 394
第24章镜面反射 396
本章目标 396
24.1光照模型 397
24.2算法实现 399
24.2.1实现目标 399
24.2.2Whied跟踪器类 400
24.2.3完全镜面BRDF 401
24.2.4反射材质 401
24.3反射对象 402
24.4不一致性 404
24.5有色反射 404
24.6实像和虚像 405
24.7示例 407
24.7.1球体反射 407
24.7.2镜面墙 408
24.7.3自反射 409
24.7.4 4球体渲染 409
24.7.5球体内部反射 411
24.7.6生成悬浮的幻影 412
24.7.7圆角对象 414
24.7.8三角形网格 415
进一步阅读 417
问题 417
练习 422
第25章光泽反射 425
本章目标 425
25.1光泽反射模型 426
25.2实现 429
25.3计算结果 432
进一步阅读 434
问题 434
练习 435
第26章全局光照 437
本章目标 437
26.1光线传输 437
26.2路径跟踪 438
26.2.1描述 438
26.2.2实现 440
26.3结果 442
26.3.1环境光源 442
26.3.2Comell盒体 444
26.3.3反射表面以及腐蚀效果 445
26.4光源采样 446
提示和讨论 449
进一步阅读 450
问题 450
练习 451
第27章透明度 452
本章目标 452
27.1折射率 454
27.2对象表面的物理特征及其折射率 454
27.3全内反射 456
27.4光照模型 457
27.5具体应用 459
27.6实现 460
27.7透明球体 463
27.7.1概述 463
27.7.2??1情形 464
27.7.3?<1情形 466
27.7.4球体内部光线 466
27.8透明组合对象 468
27.9忽略?值 470
进一步阅读 470
问题 471
练习 474
第28章真实透明度计算 478
本章目标 478
28.1Fresnel方程 479
28.1.1垂直入射 479
28.1.2切线入射 480
28.1.3全内反射 480
28.2颜色过滤 481
28.3实现 482
28.4图像 486
28.4.1Fresnel效果 486
28.4.2颜色过滤 488
28.4.3三角形网格 490
28.4.4嵌套球体 492
28.4.5区域光 493
28.5透明盒体 493
28.5.1理论概述 494
28.5.2玻璃中的光线透射 497
28.6透明球体 499
28.6.1反射来源 499
28.6.2透明球体中的球体 500
28.6.3透明球体内部的相机 501
28.7水杯 505
28.8鱼缸 507
28.9腐蚀效果 508
进一步阅读 509
问题 510
练习 514
第29章纹理映射 518
本章目标 518
29.1简介 518
29.2纹理实现 520
29.3映射技术 523
29.3.1一般实现过程 523
29.3.2矩形映射 524
29.3.3柱状映射 524
29.3.4球体映射 525
29.3.5Mercator投影 527
29.3.6光探针映射 528
29.4实现 530
29.5抗锯齿 533
29.6三角形网格 534
进一步阅读 538
问题 539
练习 539
第30章过程纹理 542
本章目标 542
30.1简介 542
30.2棋盘纹理 543
30.2.1 3D棋盘纹理 543
30.2.2 2D棋盘纹理 545
30.3纹理和纹理变换 547
30.3.1内部纹理变换 548
30.3.2对象变换和纹理 551
30.3.3消除对象变换 552
进一步阅读 554
问题 554
练习 554
第31章噪声纹理 557
本章目标 557
31.1噪声函数 557
31.1.1期望特征 557
31.1.2栅格噪声函数 558
31.2插值计算 561
31.2.1线性插值 561
31.2.2三线性插值 565
31.2.3过冲现象 569
31.3噪声函数和 570
31.3.1分形求和计算 571
31.3.2扰动函数 574
31.3.3分形布朗运动 575
31.4基本噪声纹理 578
31.5环绕噪声纹理 580
31.6大理石纹理 581
31.7沙岩纹理 585
进一步阅读 587
问题 587
练习 587