“体渲染”积分器是在“路径追踪”积分器的基础上考虑了场景中的介质,相当于是对“路径追踪”积分器的拓展。
所以,在学习“体渲染”积分器之前,得有“路径追踪”积分器的基础。参考:
Q124:PBRT-V3,“路径追踪”积分器(14.5章节)
一、那张关键的图
在学习“体渲染”时,一直感觉云里雾里。突然发现,理解“体渲染”积分器的关键竟然是这张图:
对应的方程:
上图和方程描述的是:
一条光线从p点出发,在某Medium中向前延伸,经过一段距离t和场景中的某Surface相交于p0点。
方程中参数解释如下:
p可以是Camera上的点,也可以是Medium或者Surface上的点。
若光线没有和场景中的任何Surface相交,则t=infinity()(无穷大)。
Lo(p0, -w)是交点p0处反射光线的辐射率。若没有交点,Lo(p0, -w)=0。
Tr(p0->p)表示能量从p0传播到p的传播率(即,衰减之后剩余的比例)。
Tr(p0->p)Lo(p0, -w)则表示:p0点反射的能量经过介质的衰减后,最终到达p点的能量。
p’表示光线上p点和p0点之间的任意位置,p’到p0的距离为t’(0 < t’ < t)。明显p’是在介质中。
Ls(p’, -w)表示在p’处的-w方向进入介质的能量(这个能量可能来自“自身发射的能量”和“直接光照”)。
Tr(p’->p)表示能量从p’传播到p的