从本篇笔记起,开始介绍pbrt光线传输的体渲染部分。这部分内容在pbrt2nd中属于带星号内容,相对于之前的内容可能会更难、更复杂,不过在pbrt的体系中,它应该属于核心框架中的扩展部分,所以这部分的笔记可能会粗略一些。
实现光线传输的体渲染首先需呀确定建立包含体散射作用的光线传输方程。建立该方程前,首先对体散射模型进行简单的回顾。体散射模型描述的是光线通过某块介质后其辐照度的变化情况。一种变化是由介质的吸收作用和外散射作用带来的辐照度的减少,单位距离的减少量表示为该点的辐照度乘以一个衰减系数。另一种变化是由介质自发光和内散射作用带来的辐照度的增加,单位距离的增加量表示为该点各方向入射辐照度以相位函数为权重的积分值乘以一个系数再加上该点处自发光产生的辐照度。为了使体散射模型更为简洁,引入透射率表征一段距离的光线辐照度的衰减程度,它仅与光线的起点、终点和中间的介质特性有关,而与光线辐照度无关。引入透射率,并进行整理后,体散射模型转化为:等式左边为终点处的辐照度,等式右边为起点处的辐照度乘以到终点的透射率再加上积分形式的光线路径上各点的辐照度增加量乘以其到终点的透射率。该形式的体散射模型形式更为简洁,同时也便于与仅包含反射作用的光线传输模型相结合。
下面简要的介绍通用形式的包含体散射作用的光线传输方程。该方程描述的同样是对所有传输路径包含n个点且第一个点确定的光线在第一个点处带来的全部辐亮度的积分。与仅包含表面散射作用的光线传输方程类似,它也是一个n-1重积分,只不过前者中每一重积分的变量都是场景中的全部表面,而后者中每一重积分的变量或者是场景中的全部表面,或者是场景中的全部体元。并且,对于n-1重积分,共有2的n-1次幂种的排列形式,将所有这些形式的积分结果相加才得到最终结果。为了能够减少计算量,引入了一个集合相交运算,可以实现仅考虑特定区域的计算。不过在书中,特定区域仍未整个场景。定义完整体的多重积分形式后,还需要对仅包含表面散射作用的光线传输方程的内部进行调整。第一个调整是在每个几何项中都引入从一点到下一点的透射率函数。第二个调整是对每个几何项中的两个余弦值进行调整,当该几何项的起点是一个表面上的点时,保持不变,反之则将两个余弦值都修改为1。第三个调整是对每个BSDF函数进行调整,如果BSDF取自表面上的点,则保持不变,反之则将BSDF函数替换为该点内散射的相位函数并乘以一个系数。个人理解,本节所建立的包含体散射作用的光线传输方程在其他方面都是严格使用了体散射模型中的结果,但在考虑内散射和自发光的部分,方程应该是没有按原模型进行考虑。另外,对于第三个调整,引入了表征光线发生方向变化的概率分布,即所谓的相位函数,它在一定程度上能够描述外散射和内散射的作用效果,不过还是对体散射模型中的外散射和内散射作用的近似。