本文内容主要是总结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):
入射光线Li(p, wi)可能是来自其他某点的出射光线Lo(t(p, wi), -wi),
所以,有:Li(p, wi)=Lo(t(p, wi), -wi)。
将这个式子代入前面的散射方程,同时去掉出射光线的下标“o”,得到:
这个就是“半球面形式的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:
14.4.4 对路径的积分(Integral Over Paths)
前面讲了“立体角形式的LTE”和“面积形式的LTE”,
这一小节讲的内容其实就是“路径形式的LTE”。
个人觉得这一小节非常重要!!!!!!!!!
“路径形式的LTE”是从“面积形式的LTE”推导而来的。
先看一下,什么是“路径”?
如下图,p0在相机上。该图中有哪些路径呢?
(p1-p0)为长度为1的路径;
(p2-p1-p0)为长度为2的路径;
(p3-p2-p1-p0)为长度为3的路径;
光线从相机p0出发,撞击到某表面的p1。那么从p1点返回到p0的光有哪些呢?
若p1对应的是发光的表面,则有p1发出的光Le(p1-p0)返回到p0,称(p1-p0)为长度为1的路径,这个路径上的光的辐射率为:
若p2对应的是发光的表面,则有p2发出的光Le(p2-p1)经p1返回到p0,称(p2-p1-p0)为长度为2的路径,这个路径上的光的辐射率为:
若p3对应的是发光的表面,则有p3发出的光Le(p3-p2)经p2在经p1返回到p0,称(p3-p2-p1-p0)为长度为3的路径,这个路径上的光的辐射率为:
(前面,咱提到的路径长度是基于线段的段数,也有基于顶点个数的说法(即长度值在咱的基础上+1))
所以,从p1点返回到p0的光包含如上三部分。对应的面积形式的LTE:
p0、p1、p2、p3这四个点中,只有p0和p1是确定的(光线从相机出发撞击到某表面的p1)。
p2、p3都是采样得到的。怎么采样呢?
基于p1,在整个场景中采样得到p2;
基于p2,在整个场景中采样得到p3;
这种采样方式可以无限循环下去。
式子中,所有BSDF和所有几何因子的乘积称为thoughput(流量):
所以:
式子14.16就是“路径形式的LTE”啦。
这段话是将方法的,很重要!!!!!
翻译如下:
在给定方程14.16(路径形式的LTE)和一个特定长度n,为了计算长度为n的路径上返回到p0的辐射率的Monte Carlo积分,我们需要做的是:
以一个合适的采样密度在场景中采样一组顶点;
然后,用这组顶点形成一条路径;
然后,用这组顶点计算这条路径上返回的辐射率。
不管我们是以什么样的方式产生这些顶点的:
从相机开始一条路径?
从光源开始?
从两端开始?
或者,从中间某点开始?
这些影响Monte Carlo积分权系数计算的细节。
……
最后,还是忍不住再贴出“路径形式的LTE”:
14.4.5 积分项中的delta分布
由于点光源、平行光光源、镜面反射、镜面折射的可能存在,积分项中则有可能存在相应的delta因子。
delta因子需要特殊处理,不能以“采样”来计算。
delta因子的出现,使得问题变简单:积分直接变成加法。
(细节不表)
14.4.6 分拆积分项
某些渲染算法特别擅长在某些特定条件下求解LTE,所以有必要对几分像进行拆分。
1,路径求和的展开
即,将某些路径项拆分出来:
2,拆分单条路径
对于单挑路径可以按照光源的大小拆成:大光源部分、小光源部分
3,拆分BSDF项
将BSDF拆成delta部分和非delta部分。
《over》
整个章节中最重要的是14.4.4(即,路径形式的LTE)