Physically Based Rendering (PBRT)
简介
《Physically Based Rendering: From Theory to Implementation》(PBRT)是离线渲染和路径追踪领域的权威教材,由 Matt Pharr、Wenzel Jakob 和 Greg Humphreys 编写。这本书从物理原理出发,系统讲解了如何构建一个基于物理的渲染器。
PBRT 的核心理念是:渲染应该模拟真实光线的物理行为。书中详细推导了渲染方程、BRDF、蒙特卡洛积分、重要性采样等核心概念,并给出了完整的渲染器实现代码。
这本书是免费在线阅读的,并且代码完全开源。它是理解现代渲染技术(包括电影特效和游戏引擎中的 PBR 渲染)的最佳资源。
先修要求
- C++ 编程能力:PBRT 使用 C++ 实现,需要熟悉现代 C++ 特性
- 微积分和概率论:蒙特卡洛积分、概率密度函数等数学工具是核心内容
- 线性代数:矩阵变换、坐标系转换
- 基本的图形学概念:建议先学过光线追踪基础后再读 PBRT
难度
🌟🌟🌟🌟🌟(高)
PBRT 是图形学领域最深入的教材之一,数学推导密集,适合有一定基础后深入学习。
学时
约 100-150 小时(全书 16 章,每章约 6-10 小时)
- 阅读和理解:约 60-80 小时
- 代码阅读和实验:约 40-70 小时
课程资源
自学建议
-
先学完 Ray Tracing in One Weekend。 PBRT 是进阶内容,建议先通过 Ray Tracing in One Weekend 建立光线追踪的直觉,再深入 PBRT 的数学推导。
-
重点理解蒙特卡洛积分。 这是路径追踪的核心数学工具。理解为什么蒙特卡洛方法能求解渲染方程,以及为什么重要性采样能加速收敛。
-
跟着代码走。 PBRT 的代码结构非常清晰。建议一边读书一边对照代码,理解每个类和方法对应的理论概念。
-
不要试图一次读完。 PBRT 内容非常丰富,建议分阶段阅读:先读第 1-5 章(基础),再读第 6-10 章(光照传输),最后读第 11-16 章(高级主题)。
-
动手修改渲染器。 尝试修改 PBRT 的代码,添加新的材质模型或光源类型。通过修改代码来验证你对理论的理解。