Q121:PBRT-V3,光传播方程(The Light Transport Equation)(14.4章节)

时间:2022-09-11 08:57:29

本文内容主要是总结PBRT-V3的14.4章节内容。

PBRT-V3中称为“The Light Transport Equation”(简称为LTE)的东东,在其他书里可能不叫这个名字。
记得《Ray Tracing From The Ground Up》里称为“Rendering Equation”(渲染方程)。

在学习本章节时,之前的一篇博文值得参考:
Q72:渲染方程(Rendering Equation)

Anyway, 知道指的是什么就OK啦!

14.4.1 光传播方程(LTE)的推导

LTE基于两个假设:
1,波动光学不重要(即,不考虑光的波动);
2,场景中的光是处于一个平衡状态;

LTE的基础是“能量守恒”。

根据能量守恒,某撞击点处的各种光线满足散射方程(Scattered Equation):
Q121:PBRT-V3,光传播方程(The Light Transport Equation)(14.4章节)

入射光线Li(p, wi)可能是来自其他某点的出射光线Lo(t(p, wi), -wi),
所以,有:Li(p, wi)=Lo(t(p, wi), -wi)。
将这个式子代入前面的散射方程,同时去掉出射光线的下标“o”,得到:
Q121:PBRT-V3,光传播方程(The Light Transport Equation)(14.4章节)
这个就是“半球面形式的LTE”,或者说“立体角形式的LTE”。

14.4.2 LTE的解析解

这一小节主要讲,想要求得LTE的一般性的解析解是不可能的。

所以,要进行“简化”。
“简化”之后求得解有什么用呢?
对一般性渲染没用。
但是,可以用于“一般性算法”的debug。比如,如果某个一般性的算法不能满足简化之后求得的解,那么这个算法肯定是有问题的。

简化举例:
对于漫反射,f(p, wo, wi)是常数(设为c)。
书上提到的关于漫反射的各种计算,I don’t care。
但是,在其计算过程中用到的这两种运算方式值得注意:
“连续替换”(successive substitutions)、“重组结果”(regroup the results)

14.4.3 表面形式的LTE

这个的推导建议参考:
Q72:渲染方程(Rendering Equation)
(个人觉得《Ray Tracing From The Ground Up》对于这部分的推导更好理解些)

贴出PBRT-V3上最终的表面形式的LTE:

Q121:PBRT-V3,光传播方程(The Light Transport Equation)(14.4章节)

14.4.4 对路径的积分(Integral Over Paths)

前面讲了“立体角形式的LTE”和“面积形式的LTE”,
这一小节讲的内容其实就是“路径形式的LTE”。

个人觉得这一小节非常重要!!!!!!!!!

“路径形式的LTE”是从“面积形式的LTE”推导而来的。

先看一下,什么是“路径”?
如下图,p0在相机上。该图中有哪些路径呢?
(p1-p0)为长度为1的路径;
(p2-p1-p0)为长度为2的路径;
(p3-p2-p1-p0)为长度为3的路径;

Q121:PBRT-V3,光传播方程(The Light Transport Equation)(14.4章节)

光线从相机p0出发,撞击到某表面的p1。那么从p1点返回到p0的光有哪些呢?

若p1对应的是发光的表面,则有p1发出的光Le(p1-p0)返回到p0,称(p1-p0)为长度为1的路径,这个路径上的光的辐射率为:
Q121:PBRT-V3,光传播方程(The Light Transport Equation)(14.4章节)

若p2对应的是发光的表面,则有p2发出的光Le(p2-p1)经p1返回到p0,称(p2-p1-p0)为长度为2的路径,这个路径上的光的辐射率为:
Q121:PBRT-V3,光传播方程(The Light Transport Equation)(14.4章节)

若p3对应的是发光的表面,则有p3发出的光Le(p3-p2)经p2在经p1返回到p0,称(p3-p2-p1-p0)为长度为3的路径,这个路径上的光的辐射率为:
Q121:PBRT-V3,光传播方程(The Light Transport Equation)(14.4章节)

(前面,咱提到的路径长度是基于线段的段数,也有基于顶点个数的说法(即长度值在咱的基础上+1))

所以,从p1点返回到p0的光包含如上三部分。对应的面积形式的LTE:
Q121:PBRT-V3,光传播方程(The Light Transport Equation)(14.4章节)

p0、p1、p2、p3这四个点中,只有p0和p1是确定的(光线从相机出发撞击到某表面的p1)。
p2、p3都是采样得到的。怎么采样呢?
基于p1,在整个场景中采样得到p2;
基于p2,在整个场景中采样得到p3;

这种采样方式可以无限循环下去。

Q121:PBRT-V3,光传播方程(The Light Transport Equation)(14.4章节)
Q121:PBRT-V3,光传播方程(The Light Transport Equation)(14.4章节)

式子中,所有BSDF和所有几何因子的乘积称为thoughput(流量):
Q121:PBRT-V3,光传播方程(The Light Transport Equation)(14.4章节)

所以:
Q121:PBRT-V3,光传播方程(The Light Transport Equation)(14.4章节)

式子14.16就是“路径形式的LTE”啦。

Q121:PBRT-V3,光传播方程(The Light Transport Equation)(14.4章节)

这段话是将方法的,很重要!!!!!

翻译如下:

在给定方程14.16(路径形式的LTE)和一个特定长度n,为了计算长度为n的路径上返回到p0的辐射率的Monte Carlo积分,我们需要做的是:

以一个合适的采样密度在场景中采样一组顶点;
然后,用这组顶点形成一条路径;
然后,用这组顶点计算这条路径上返回的辐射率。

不管我们是以什么样的方式产生这些顶点的:

从相机开始一条路径?
从光源开始?
从两端开始?
或者,从中间某点开始?

这些影响Monte Carlo积分权系数计算的细节。
……

最后,还是忍不住再贴出“路径形式的LTE”:
Q121:PBRT-V3,光传播方程(The Light Transport Equation)(14.4章节)

14.4.5 积分项中的delta分布

由于点光源、平行光光源、镜面反射、镜面折射的可能存在,积分项中则有可能存在相应的delta因子。

delta因子需要特殊处理,不能以“采样”来计算。

delta因子的出现,使得问题变简单:积分直接变成加法。

(细节不表)

14.4.6 分拆积分项

某些渲染算法特别擅长在某些特定条件下求解LTE,所以有必要对几分像进行拆分。

1,路径求和的展开

即,将某些路径项拆分出来:

Q121:PBRT-V3,光传播方程(The Light Transport Equation)(14.4章节)

2,拆分单条路径

对于单挑路径可以按照光源的大小拆成:大光源部分、小光源部分

Q121:PBRT-V3,光传播方程(The Light Transport Equation)(14.4章节)

3,拆分BSDF项

将BSDF拆成delta部分和非delta部分。

Q121:PBRT-V3,光传播方程(The Light Transport Equation)(14.4章节)

《over》

整个章节中最重要的是14.4.4(即,路径形式的LTE