光线追踪(辐射度量学、渲染方程与全局光照)
前两章解决了光线追踪的两个基础问题:如何让一条光线找到最近交点,以及如何用加速结构减少不必要的求交。到这里,我们已经知道“相机看见了哪个表面点”。
接下来的问题是:这个表面点沿相机方向应该发出多少光?
在早期着色章节中,我们用环境光、漫反射和高光近似表面颜色。那套模型适合建立直觉,但如果要理解路径追踪、全局光照、PBR 和渲染方程,就需要把“颜色”换成更精确的物理量:光能如何从一个方向进入表面,又如何被表面分配到另一个方向。
为什么需要辐射度量学
Section titled “为什么需要辐射度量学”辐射度量学 (Radiometry) 是描述光能传播的度量体系。它不关心人眼感知的明亮程度,而是用物理量描述电磁辐射能量如何在空间、面积和方向中分布。
在渲染中,我们需要它回答几类问题:
- 光源总共发出多少能量?
- 某个表面单位面积接收多少光?
- 从某个方向看过去,单位面积、单位立体角中有多少光?
- 表面如何把入射光反射到出射方向?
如果只说“这个点很亮”,信息是不够的。我们需要知道亮度来自哪个方向、覆盖多大面积、被什么材质反射、最终朝哪个方向离开。
辐射通量、辐照度与辐亮度
Section titled “辐射通量、辐照度与辐亮度”本章只需要先掌握三个最重要的量。
辐射通量 (Radiant Flux) 表示单位时间内传输的总能量,记作 ,单位是瓦特 (W):
可以把它理解成“光源总功率”。例如一个点光源发出的总光能越多,辐射通量越大。
辐照度 (Irradiance) 表示单位面积接收到的辐射通量,记作 :
它描述“这个表面点接收到了多少光”。同一束光斜着照到表面时,会被摊到更大的面积上,所以有效辐照度会乘上余弦项:
这正是 Lambert 漫反射中 的物理来源。
辐亮度 (Radiance) 记作 ,描述单位投影面积、单位立体角中的辐射通量:
它是渲染中最核心的量。相机像素最终看到的,概念上就是沿某条光线到达相机的辐亮度。
立体角:方向也有面积
Section titled “立体角:方向也有面积”在二维平面里,角度衡量一段圆弧占整个圆的比例;在三维空间里,立体角 (Solid Angle) 衡量一块方向区域占单位球面的比例,记作 ,单位是球面度 (sr)。
如果从某个表面点看向一个面光源,光源越大、越近,它占据的方向范围越大,立体角也越大。渲染方程中的积分不是在普通面积上积分,而是在表面点上方半球的所有入射方向上积分:
这里 通常表示以表面法线为中心的上半球。每个方向 都可能带来入射辐亮度 。
BRDF:表面如何反射光
Section titled “BRDF:表面如何反射光”BRDF (Bidirectional Reflectance Distribution Function,双向反射分布函数) 描述表面如何把来自入射方向 的光反射到出射方向 。
它通常记作:
其中:
- 是表面点。
- 是入射方向。
- 是出射方向,也就是朝向相机或下一条光线的方向。
- 的值描述从 到 的反射比例和方向分布。
不同材质的 BRDF 形状不同。理想漫反射会把光均匀散射到半球;镜面材质会把光集中反射到一个方向附近;粗糙金属会形成较宽的高光瓣。
漫反射 BRDF
Section titled “漫反射 BRDF”理想 Lambert 漫反射的 BRDF 是常数:
其中 是反照率 (Albedo)。除以 是为了保证能量守恒:表面不能反射出比入射更多的能量。
有了辐亮度、入射方向、BRDF 和余弦项,就可以写出经典的渲染方程 (Rendering Equation):
逐项理解:
- :从表面点 沿方向 离开的辐亮度。
- :表面自己发出的光,例如灯管或发光材质。
- :从方向 到达表面点的入射辐亮度。
- :表面把入射光反射到出射方向的规则。
- :入射方向与表面法线的余弦项。
- :对上半球所有入射方向求和。
这条公式的重点不是复杂符号,而是一个朴素问题:从所有方向来的光,经过材质反射后,有多少会朝相机方向离开?
上面的组件把半球积分画成可视化直觉。橙色方向表示直接入射光,蓝色虚线表示环境反弹来的间接光,紫色区域表示 BRDF 把光分配到不同出射方向的趋势。
局部光照是渲染方程的简化
Section titled “局部光照是渲染方程的简化”之前的 Blinn-Phong 或 Lambert 模型可以看作渲染方程的简化版本。它们通常只考虑少数几个显式光源,而不是半球上所有方向的入射光。
对于一个方向光,漫反射项可以写成:
如果使用 Lambert BRDF:
工程中的局部光照模型会继续加入高光项、环境光近似、距离衰减和阴影测试。它们实用且快速,但本质上都在绕开完整半球积分。
全局光照:入射光也来自其它表面
Section titled “全局光照:入射光也来自其它表面”渲染方程真正有趣的地方在于 。从某个方向来的入射光,可能直接来自光源,也可能是其它表面反射之后再到达当前点。
这意味着渲染方程是递归的:
- 当前点需要知道某个方向的入射辐亮度。
- 沿该方向反向追踪,会命中另一个表面点。
- 那个表面点的出射辐亮度,又由它自己的入射方向积分决定。
- 光可以在场景中多次反弹,形成间接照明。
这就是全局光照 (Global Illumination) 的核心。它解释了许多局部光照难以表达的现象:
- 白墙附近的物体会被墙面反弹光照亮。
- 红色地毯会把红色间接光染到附近物体上。
- 阴影区域并不总是纯黑,因为它还能接收其它表面的反射光。
- 光在狭窄空间中多次反弹,会产生更复杂的明暗层次。
路径追踪的入口
Section titled “路径追踪的入口”渲染方程包含一个半球积分。对真实场景来说,这个积分通常没有简单解析解,因此需要数值方法。路径追踪 (Path Tracing) 的基本思想是:不枚举半球上的所有方向,而是随机选择一些方向采样,用统计平均近似积分。
概念上可以写成:
其中 是采样方向的概率密度。这个公式会在下一章详细展开。本章只需要先记住:
- 渲染方程告诉我们要算什么。
- 路径追踪告诉我们如何用随机采样近似它。
- 采样越少,噪声越明显;采样越多,结果越稳定,但成本越高。
能量守恒与材质约束
Section titled “能量守恒与材质约束”物理材质不能凭空制造能量。除非表面本身发光,否则反射出去的能量不应超过接收到的能量。这就是能量守恒 (Energy Conservation)。
对 BRDF 来说,一个重要约束是:
直觉上,这表示固定一个入射方向后,把所有出射方向的反射贡献加起来,不能超过入射能量。
PBR 材质系统中的许多限制都来自这个思想。例如金属和非金属的反射行为不同,粗糙度会改变高光分布但不应该凭空增加总能量,漫反射和镜面反射也不能简单无限相加。
本章把光线追踪从“可见性查询”推进到“物理光照计算”。
- 辐射度量学用物理量描述光能传播;渲染中最重要的量是辐亮度 。
- 辐射通量表示总能量流,辐照度表示单位面积接收多少光,辐亮度表示沿某个方向看到多少光。
- 立体角让我们能在方向空间上积分;表面上方半球 包含所有可能入射方向。
- BRDF 描述材质如何把入射光分配到出射方向,Lambert 漫反射 BRDF 为 。
- 渲染方程把发光项、入射辐亮度、BRDF、余弦项和半球积分统一起来。
- 全局光照来自渲染方程的递归性:入射光可能是其它表面反射来的出射光。
- 路径追踪会用随机采样近似渲染方程中的积分,采样数量决定噪声与成本。
下一章会继续展开路径追踪:如何用蒙特卡洛积分估计渲染方程,以及为什么重要性采样能显著降低噪声。