《物理渲染 从理论到实现》PDF下载

  • 购买积分:23 如何计算积分?
  • 作  者:(美)Matt Pharr,(美)Greg Humphreys著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2016
  • ISBN:9787302449812
  • 页数:892 页
图书介绍:图形系统设计已经愈发成为现代计算机图形学以及游戏的一个关键特性。本书详细解释了图形系统设计的理论和方法,以及与之相关的实现方案,以帮助用户开发、测试和调试图形程序。本书适合计算机图形学专业学生和自学者作为教材或者参考读物使用。

第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 BRDF→BTDF适配器 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 2D(u,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章 蒙特卡罗积分Ⅰ:基本概念 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章 蒙特卡罗积分Ⅱ:效率改善 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章 光线传输Ⅰ:表面反射 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章 光线传输 Ⅱ:体渲染 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章 光线传输Ⅲ:光线传输的预计算 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 2×2线性方程组 801

A.6.2 4×4矩阵 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