本篇笔记接上篇,继续介绍利用光子束漫反射模型求解简单形式的次表面反射过程。
计算从介质表面离开的光线辐照度。计算时使用菲涅耳透射模型,并分别针对零阶矩部分和一阶矩部分进行计算,两部分的和作为最终的结果。
从上一篇笔记中的内容到此处,都是针对位于介质某一特定位置的点光源产生的辐照度。还需要考虑全部位置点光源产生的辐照度。书中仅考虑了沿法线方向的积分,并认为各光源的辐照度相同。此处存在疑问。考虑全部点光源的作用效果时,还考虑了e指数形式的衰减效果,这点可以理解,但又乘以了一个不变的外散射系数就暂时无法理解了。对于这个积分,可以采用基于重要性采样的蒙特卡罗积分形式求得。
前面介绍的是多次散射后的效果的计算,下面介绍单次散射的效果的计算。之所以单独考虑单次散射的效果,主要是因为单次散射时,不在具有各向同性、均匀性等能够化简表达式的一些特性,同时单次散射在距离较近处,会有较明显的照亮效果。对于单次散射的效果,采用基本的路径跟踪积分器的方法进行求解即可。因为只计算单次散射,因而只考虑了两段长度的路径。在要求解的方程中,包含几何项和BSSRDF项。其中几何项就包含了从一点到另一点的衰减,此处仍按各向同性介质计算,得到的衰减系数包括与距离平方的倒数和e的负指数两部分。对于BSSRDF,仍按漫反射考虑,认为它是关于余弦的函数。除此之外,还利用菲涅耳模型,将光线的透射情况纳入到方程中。这里需要注意一点的是在透射时,当入射角大于一定的角度后,就会发生全反射,无透射的情况。
实现上述多次散射后的效果计算和单次散射后的效果计算之后,就可以将结果导入列表式的BSSRDF中了。该表格分别以半径和反射率作为横纵轴。表格中的半径变量选择指数形式。对于反射率的选择则较为复杂,原因在于散射性的反射率和效果上的反射率具有非线性特性。具体二者是什么关系,尚不清楚。书中给出了一个关于散射性的反射率表达式,采用该表达式得到的效果上的反射率则呈现出较好的直线性。在表格中存储数据时,要存储单次散射效果和多次散射效果之和。另外还需要存储关于半径的条件概率分布。在这个过程中,需要计算从一个点到下一个点的概率密度积分和,用泰勒级数的一阶展开后,将积分转化成代数运算进行求解。
在这一部分,书中还提供了一个工具函数,该函数根据列表中的BSSRDF反过来计算介质中的一些基本属性。拥有这个函数后,就可以直接在拿到BSSRDF表格中的数据后,对介质的某个基本属性进行修改,然后得到新的BSSRDF表格,用于达到所期望的渲染效果。