新書推薦:
《
知识社会史(下卷):从《百科全书》到“在线百科”
》
售價:NT$
454.0
《
我读巴芒:永恒的价值
》
售價:NT$
602.0
《
你漏财了:9种逆向思维算清人生这本账
》
售價:NT$
254.0
《
我们终将老去:认识生命的第二阶段(比利时的“理查德·道金斯”,一位行为生物学家的老年有用论
》
售價:NT$
418.0
《
谁是窃书之人 日本文坛新锐作家深绿野分著 无限流×悬疑×幻想小说
》
售價:NT$
254.0
《
一个经济杀手的自白 第3版
》
售價:NT$
505.0
《
8秒按压告别疼痛
》
售價:NT$
398.0
《
津巴多时间心理学:挣脱束缚、改写命运的6种时间观
》
售價:NT$
352.0
|
編輯推薦: |
本书曾获得软件界Jolt图书类大奖,在计算机图形学界鼎鼎大名!同时也是一本重量级巨著!
|
內容簡介: |
本书详细阐述了与物理渲染相关的高效解决方案,主要包括几何形状和转换,图元和相交加速计算,颜色和辐射度,相机模型,采样和重构,反射模型,材质、纹理、体散射、光源、蒙特卡罗积分、光线传输等内容。此外,本书还提供了相应的算法、代码以及伪代码,以帮助读者进一步理解相关方案的实现过程。 本书适合作为高等院校计算机及相关专业的教材和教学参考书,也可作为相关开发人员的自学教材和参考 手册。
|
目錄:
|
目 录
第1章 概述 1
1.1 文学编程 1
1.2 照片级渲染和光线跟踪算法 3
1.2.1 相机 4
1.2.2 光线-对象相交 5
1.2.3 光照分布 6
1.2.4 可见性 7
1.2.5 表面散射 7
1.2.6 递归光线跟踪 8
1.2.7 光线传播 9
1.3 pbrt系统概述 11
1.3.1 执行阶段 14
1.3.2 场景表达 15
1.3.3 渲染器接口与SamplerRenderer 17
1.3.4 主渲染循环 19
1.3.5 pbrt的并行机制 27
1.3.6 WHITTED光线跟踪积分器 31
1.4 如何阅读本书 35
1.5 使用并理解程序代码 36
1.5.1 指针或引用 36
1.5.2 代码优化 36
1.5.3 本书网站 37
1.5.4 系统扩展 37
1.5.5 Bug 37
1.6 进一步阅读 38
1.7 本章练习 39
第2章 几何形状和转换 40
2.1 坐标系 40
2.2 向量 41
2.2.1 运算 42
2.2.2 缩放操作 43
2.2.3 点积和叉积计算 44
2.2.4 标准化计算 46
2.2.5 基于向量的坐标系 46
2.3 点 47
2.4 法线 49
2.5 射线 50
2.6 三维包围盒 53
2.7 转换操作 56
2.7.1 齐次坐标 57
2.7.2 基本操作 58
2.7.3 平移 59
2.7.4 缩放操作 61
2.7.5 x,y,z轴旋转 62
2.7.6 围绕任意轴的旋转行为 63
2.7.7 视见转换 65
2.8 转换应用 66
2.8.1 点 67
2.8.2 向量 67
2.8.3 法线 68
2.8.4 射线 68
2.8.5 包围盒 69
2.8.6 复合转换 69
2.8.7 转换和坐标系的左右手规则 70
2.9 动画转换 70
2.9.1 四元数 72
2.9.2 四元数插值 74
2.9.3 AnimatedTransform实现 75
2.10 微分几何 79
2.11 进一步阅读 82
2.12 本章练习 83
第3章 几何形状 84
3.1 基本的Shape接口 84
3.1.1 包围机制 85
3.1.2 细化操作 86
3.1.3 相交行为 87
3.1.4 避免自相交行为 88
3.1.5 几何体着色 88
3.1.6 表面积 89
3.1.7 多面性 89
3.2 球体 89
3.2.1 构建过程 91
3.2.2 包围体 91
3.2.3 相交 92
3.2.4 局部球体 94
*3.2.5 法线向量的偏导数 96
3.2.6 DifferentialGeometry的初始化操作 97
3.2.7 表面积 98
3.3 圆柱体 99
3.3.1 圆柱体的构造过程 99
3.3.2 圆柱体的包围机制 101
3.3.3 圆柱体的相交计算 101
3.3.4 局部圆柱体 102
3.3.5 圆柱体的表面积 103
3.4 圆盘 103
3.4.1 圆盘的构建过程 104
3.4.2 圆盘的包围机制 105
3.4.3 圆盘的相交计算 105
3.4.4 圆盘的表面积 106
3.5 其他二次表面 107
3.5.1 圆锥体 107
3.5.2 抛物面 108
3.5.3 双曲面 108
3.6 三角形和网格 109
3.6.1 三角形 112
3.6.2 三角形相交计算 113
3.6.3 网格表面积 117
3.6.4 着色几何体 118
*3.7 表面细分 120
3.7.1 网格表达方式 122
3.7.2 网格边界 130
3.7.3 网格细分 130
3.7.4 计算新的顶点位置 132
3.7.5 更新网格拓扑结构 137
3.7.6 极限表面和输出结果 139
3.8 进一步阅读 142
3.9 本章练习 143
第4章 图元和相交加速计算 148
4.1 图元接口和几何图元 148
4.1.1 几何图元 151
4.1.2 TransformedPrimitive:对象实例和动画图元 152
4.2 集合体 155
4.3 网格加速结构 158
4.3.1 构建过程 159
4.3.2 遍历操作 164
4.4 包围体层次结构 169
4.4.1 BVH构建过程 170
4.4.2 启发式表面积计算 176
4.4.3 遍历过程中的紧凑BVH 180
4.4.4 遍历 182
4.5 kd树加速结构 185
4.5.1 树形结构的表达方式 186
4.5.2 树形结构的构造方式 188
4.5.3 遍历操作 196
4.6 调试聚合体 200
4.6.1 寻找聚合体中的bug 201
4.6.2 修复几何体中的bug 204
4.6.3 聚合体性能问题 204
4.7 进一步阅读 205
4.7.1 网格 205
4.7.2 包围体层次结构 205
4.7.3 kd树 207
4.7.4 启发式表面积方案 207
4.7.5 其他加速结构 208
4.8 本章练习 209
第5章 颜色和辐射度 212
5.1 光谱表达方式 212
5.1.1 Spectrum类型 213
5.1.2 CoefficientSpectrum实现 214
5.2 SampledSpectrum类 216
5.2.1 XYZ颜色 219
5.2.2 RGB颜色 222
5.3 RGBSpectrum实现 227
5.4 辐射度测量学的基本知识 229
5.4.1 基本量值 230
5.4.2 入射和出射辐射度函数 233
5.4.3 亮度和光度测定 233
5.5 与辐射积分协同工作 234
5.5.1 投影立体角的积分运算 235
5.5.2 球体坐标的积分运算 235
5.5.3 面积积分运算 237
5.6 表面反射 239
5.6.1 BRDF 239
5.6.2 BSSRDF 240
5.7 进一步阅读 241
5.8 本章练习 242
第6章 相机模型 243
6.1 相机模型概述 243
6.2 投影相机模型 246
6.2.1 正交相机 247
6.2.2 透视相机 250
6.2.3 景深 253
6.3 环境相机 257
6.4 进一步阅读 258
6.5 本章练习 259
第7章 采样和重构 260
7.1 采样理论 260
7.1.1 频率范围和傅里叶变换 261
7.1.2 理想采样状态和重构 263
7.1.3 锯齿 266
7.1.4 抗锯齿技术 267
7.1.5 图像合成技术 269
7.1.6 渲染中的锯齿来源 269
7.1.7 理解像素数据 270
7.2 图像采样接口 271
7.3 分层采样 277
7.4 低偏差采样 287
*7.4.1 偏差定义 288
7.4.2 HAMMERSLEY和HALTON序列 289
7.4.3 [0,2]序列 295
7.4.4 低偏差采样器 298
*7.5 最佳候选采样模式 303
7.6 自适应采样 309
7.7 图像重构 314
7.8 Film类和成像管线 323
7.8.1 Film接口 323
7.8.2 ImageFilm类 325
7.9 进一步阅读 333
7.10 本章练习 336
第8章 反射模型 339
8.1 基本接口 342
8.1.1 反射率 344
8.1.2 BRDFBTDF适配器 345
8.1.3 BxDF缩放适配器 345
8.2 镜面反射和透射 346
8.2.1 菲涅耳反射率 347
8.2.2 镜面反射 351
8.2.3 镜面透射 354
8.3 Lambertian反射 358
8.4 微面元模型 358
8.4.1 Oren-Nayar漫反射 360
8.4.2 Torrance-Sparrow模型 361
8.4.3 Blinn微面元分布 364
8.4.4 各项异性微面元模型 366
8.5 菲涅耳入射效果 368
8.6 测算BRDF 370
8.6.1 不规则的各向同性测算BRDF 371
8.6.2 规则半角格式 374
8.7 进一步阅读 376
8.8 本章练习 378
第9章 材质 380
9.1 BSDF 380
9.2 Material接口和实现 385
9.2.1 MatteMaterial类 386
9.2.2 PlasticMaterial类 387
9.2.3 混合材质 389
9.2.4 测算材质 390
9.2.5 其他材质 391
9.3 凹凸贴图 392
9.4 进一步阅读 396
9.5 本章练习 397
第10章 纹理 399
10.1 采样和抗锯齿操作 400
10.1.1 计算纹理采样率 400
10.1.2 滤波纹理函数 404
*10.1.3 镜面反射和透射的光线微分 405
10.2 纹理坐标生成 408
10.2.1 2Du,v映射 409
10.2.2 球体映射 410
10.2.3 圆柱体映射 411
10.2.4 平面映射 412
10.2.5 3D映射 413
10.3 纹理接口和基本纹理 413
10.3.1 固定纹理 414
10.3.2 混合纹理 415
10.3.3 线性插值 416
10.4 图像纹理 417
10.4.1 纹理缓存 418
10.4.2 纹理链 421
10.4.3 各向同性三角形滤波器 428
*10.4.4 椭圆加权平均值 430
10.5 体纹理和过程纹理 435
10.5.1 UV纹理 436
10.5.2 棋盘纹理 436
10.5.3 体棋盘纹理 441
10.6 噪声 442
10.6.1 Perlin噪声 443
10.6.2 随机波尔卡圆斑 446
10.6.3 频谱合成 448
10.6.4 凹凸和褶皱纹理 451
10.6.5 风力波形 452
10.6.6 大理石纹理 453
10.7 进一步阅读 454
10.8 本章练习 456
第11章 体散射 459
11.1 体散射处理过程 459
11.1.1 吸收过程 460
11.1.2 放射过程 461
11.1.3 外散射和衰减 462
11.1.4 内散射 463
11.2 相位函数 464
11.3 体接口和均一介质 467
11.4 密度变化的空间体 470
11.4.1 3D网格 471
11.4.2 指数密度 473
11.5 体聚合 475
11.6 BSSRDF类 476
11.7 进一步阅读 478
11.8 本章练习 479
第12章 光源 481
12.1 Light接口 481
12.2 点光源 484
12.2.1 聚光灯 486
12.2.2 纹理投射光照 488
12.2.3 测角光度图光照 491
12.3 平行光照 494
12.4 区域光照 495
12.5 无穷远区域光源 499
12.6 进一步阅读 501
12.7 本章练习 503
第13章 蒙特卡罗积分I:基本概念 504
13.1 背景知识和概率回顾 505
13.1.1 连续随机变量 505
13.1.2 期望值和方差 506
13.2 蒙特卡罗估算函数 507
13.3 随机变量的基本采样 508
13.3.1 反演法 509
13.3.2 舍选法 514
*13.4 METROPOLIS采样 516
13.4.1 基本算法 516
13.4.2 选取突变策略 517
13.4.3 初始偏差 518
13.4.4 基于Metropolis采样的积分 519
13.4.5 示例:一维设置 519
13.5 分布间的转换 522
13.5.1 多维转换 523
13.5.2 极坐标 523
13.5.3 球体坐标 523
13.6 包含多维转换的2D采样 524
13.6.1 示例:半球均匀采样 524
13.6.2 单位圆盘对象采样 526
13.6.3 余弦加权半球采样 529
13.6.4 示例:三角形采样 530
13.6.5 示例:分段-常量2D分布 531
13.7 进一步阅读 534
13.8 本章练习 535
第14章 蒙特卡罗积分II:效率改善 536
14.1 俄罗斯轮盘赌和划分机制 537
14.2 采样置放 538
14.2.1 分层采样 538
14.2.2 quasi蒙特卡罗技术 540
14.2.3 采样翘曲和变形 541
14.3 偏差 541
14.4 重要性采样 542
14.5 多重重要性采样机制 544
14.6 采样反射函数 547
14.6.1 Blinn微面元分布采样 548
14.6.2 各向异性微面元模型的采样 551
14.6.3 FresnelBlend采样 553
14.6.4 镜面反射和透射 553
14.6.5 应用:反射率估算 555
14.6.6 BSDF采样 556
14.7 光源采样 559
14.7.1 基本接口 560
14.7.2 包含奇点的光源 562
14.7.3 区域光源 565
14.7.4 ShapeSet采样 571
14.7.5 无穷大区域光源 572
*14.8 体散射 577
14.8.1 相位函数采样 577
14.8.2 计算光学厚度 578
14.9 进一步阅读 579
14.10 本章练习 580
第15章 光线传输I:表面反射 583
15.1 直接光照 584
15.2 光线传输方程 592
15.2.1 基本推导过程 593
15.2.2 LTE的解析解 594
15.2.3 LTE的表面形式 595
15.2.4 路径积分 596
15.2.5 被积函数中的delta分布 597
15.2.6 划分被积函数 598
15.2.7 测量方程和重要性 599
15.3 路径跟踪 600
15.3.1 概述 600
15.3.2 路径采样 601
15.3.3 递增式路径构造 603
15.3.4 实现过程 603
15.3.5 双向路径跟踪 607
15.4 实时全局光照 608
15.4.1 创建虚拟光源 611
15.4.2 利用虚拟光源进行渲染 615
15.5 辐射度缓存机制 619
15.5.1 利用辐射度缓存进行渲染 622
15.5.2 查找和插值 624
15.5.3 添加新值 627
15.6 粒子跟踪和光子贴图 629
*15.6.1 粒子跟踪的理论基础 630
15.6.2 光子积分器 632
15.6.3 构造光子贴图 634
15.6.4 使用光子贴图 645
15.6.5 光子插值和密度估算 654
*15.7 METROPOLIS光线传输算法 658
15.7.1 采样表达方式 661
15.7.2 突变行为 663
15.7.3 生成路径 665
15.7.4 路径影响作用 667
15.7.5 MetropolisRenderer实现 674
15.7.6 渲染操作 677
15.8 进一步阅读 681
15.9 本章练习 684
*第16章 光线传输II:体渲染 688
16.1 传输方程 688
16.2 体积分器接口 690
16.3 发射积分器 690
16.4 单散射积分器 695
16.5 子表面散射 697
16.5.1 采样点的泊松分布 700
16.5.2 构建采样点八叉树 707
16.5.3 偶极漫反射近似计算 711
16.5.4 基于层次结构积分的渲染行为 716
16.5.5 设置散射属性 719
16.6 进一步阅读 721
16.7 本章练习 723
*第17章 光线传输III:光线传输的预计算 727
17.1 基础函数:理论 728
17.1.1 分段式-常数基 729
17.1.2 基上的投影 730
17.1.3 正交基函数 731
17.2 球谐函数 732
17.2.1 高效计算 734
17.2.2 光源投影 740
17.2.3 投影入射辐射度函数 746
17.2.4 减少环状效果 747
17.2.5 旋转 748
17.3 辐射度探测器 752
17.3.1 创建辐射度探测器 753
17.3.2 使用辐射度探测器 759
17.4 漫反射传输预计算 763
17.5 光泽传输预计算 766
17.5.1 传输矩阵 768
17.5.2 BSDF矩阵 769
17.5.3 GlossyPRTIntegrator实现 771
17.6 进一步阅读 774
17.7 本章练习 775
第18章 回顾和展望 777
18.1 设计回顾 777
18.1.1 抽象与效率 778
18.1.2 其他设计方案:仅使用三角形 778
18.1.3 提升场景复杂度 779
18.2 吞吐量处理器 779
18.2.1 未来发展状况 781
18.2.2 参考资源 781
18.3 总结 782
附录A 实用工具 783
A.1 主要包含的文件 783
A.1.1 工具函数 783
A.1.2 伪随机数 786
A.2 图形文件的输入和输出 786
A.3 与用户的通信 787
A.3.1 错误报告 788
A.3.2 进度报告 788
A.3.3 简单的浮点文件读取器 789
A.4 探测器和统计 789
A.5 内存管理 791
A.5.1 可变栈的分配 791
A.5.2 引用计数对象 792
A.5.3 以缓存友好方式使用内存 794
A.5.4 Arena内存分配 796
A.5.5 2D块数组 798
A.6 数学计算例程 801
A.6.1 22线性方程组 801
A.6.2 44矩阵 801
A.7 八叉树 802
A.8 kd树 807
A.9 并行机制 813
A.9.1 内存一致性模型以及性能 813
A.9.2 原子操作 814
A.9.3 互斥体 817
A.9.4 任务系统 818
A.10 进一步阅读 820
A.11 本章练习 821
附录B 场景描述接口 822
B.1 参数集 823
B.1.1 ParamSetItem结构 824
B.1.2 添加参数集 824
B.1.3 在参数集查找数据值 825
B.2 初始化和渲染选项 827
B.2.1 状态跟踪 828
B.2.2 转换操作 829
B.2.3 选项 831
B.3 场景描述 834
B.3.1 层次图形状态 834
B.3.2 纹理和材质参数 836
B.3.3 表面和材质描述 837
B.3.4 光源 839
B.3.5 形状和体区域 840
B.3.6 对象实例化操作 843
B.3.7 场景结束与渲染操作 845
B.4 添加新的对象实现 847
B.5 进一步阅读 847
B.6 本章练习 848
参考文献 850
|
內容試閱:
|
前言 渲染可视为计算机图形学中的基础内容。在最高抽象层次上,渲染行为表示为三维场景描述与图像之间的转换。动画、集合建模、纹理机制以及其他计算机图形学领域的相关算法须通过某种渲染处理过程传递其结果,进而在图像中呈现。渲染操作的应用日趋广泛,包括影视业以及游戏等领域,并逐渐成为创意表达、娱乐以及视觉化的前沿阵地。在该领域的早期,渲染研究主要集中于处理基本问题,例如确定相对于既定视点的可见对象。随着高效方法的不断涌现,以及图形学其他领域不断发展导致的更为丰富、逼真的场景描述,现代渲染操作扩展为更为广泛的学科领域,包括物理和天文物理、天文学、生物学、心理学、感知研究以及纯数学和应用数学。渲染操作的跨学科特征也使其成为一个令人着迷的科研领域。本书通过完整渲染系统的文档资源代码,选取了相应的渲染算法,书中的全部图像均通过该系统加以渲染。pbrt系统通过文学编程(literate programming)这一程序设计方法加以编写,并将系统描述与其实现代码加以混合。在计算机图形学和通用计算机科学中,文学编程可视为引入相关概念的一种有效方法。某些时候,算法细节直至其实现完毕后方清晰呈现。因此,考察算法的真实实现过程则是深入理解算法细节的一种较好方法。实际上,针对计算机图形学的进一步研究,与粗浅的了解相比,通过这一方式可向读者提供更为坚实的基础知识。除了了解算法的实际实现之外,在完整和较为重要的软件系统中表达算法还可处理中等规模渲染系统中的设计和实现问题。渲染系统的基本抽象和接口设计对于实现的优雅性以及后续扩展性均会产生较大的影响,而这一设计领域内的折中方案则较少讨论。pbrt以及本书内容主要讨论照片级渲染,并可通过多种不同方式定义为图像生成任务,且与相机所拍摄的照片基本一致;或者对应图像生成任务具有与人眼相同的响应机制。除此之外,照片级图像对于影视特效工业也十分重要,其原因在于,计算机生成的图像须与真实世界环境实现无缝混合。在娱乐应用中,全部图像均为合成结果,真实感可视为一种效果工具,以使观众不会留意并不存在的场景环境。最后,针对渲染系统的输出质量,真实感还可作为一种定义良好的度量方案。本书及其所描述的系统并不会涉及渲染过程中的全部技术,鉴于某些与真实感渲染相关的话题无法与软件系统体系结构实现较好的适配(例如有限元辐射度算法),因而相关内容并未出现于本书中;或者,算法的实现复杂度已超出了其教学价值。相关内容本书会在相应章节予以提示,并提供了相应的参考资源以供读者进一步阅读。另外,渲染机制的其他领域,例如交互式渲染、可视化机制以及渲染说明形式(例如笔墨风格)本书也并未涉及。无论如何,系统中的大多数算法和概念(例如纹理贴图抗锯齿算法)适用于多种不同类型的渲染集。
|
|