Overview
这里只介绍AreaLight的采样,下面默认的Light都是Area Light,Delta Light不在该文范围内。
目的:在path tracing中,Sampling Lights的目的不是为了获得某个光源某个方向的radiance,而是要估计当前path的交点被整个场景所有光源对其产生的irradiance。
样本:任何估计都是通过一个样本去做估计的,那么在Sampling Lights中的样本,就是当前path的交点发射的一个方向。
Integrals over Area
由于计算光源的面积产生的irradiance比计算点半球方向的积分容易很多,所以irradiance的计算可以用光源的面积作为积分计算。
面积和立体角的关系:
![来自pbrbook](https://i-blog.csdnimg.cn/blog_migrate/e6531e9e11981a5fadb30b9aa839abd6.png)
从上图可以看出dA和dω的关系:
Sampling Light Source
如前面所说,采样到一个光源后,我们需要估计这个光源的总体irradiance,irradiance是由半球内的立体角积分得到。根据蒙特卡洛方法,我们需要知道这个从这个光源出发到达一点的方向的pdf,最后参与到bsdf的计算去。
下面整理了采样光源的具体步骤。
1)由于场景可能有多过光源,根据光源分布(或可以用均匀采样)采样,需要计算出该光源的pmf。
2)采样光源的具体一个面,计算出该面在光源中的pmf。
3)在该面上随机采样一个点,并和光照点生成射线先做可见性检测。
4)假如该方向可见,计算方向的pdf。
光照方向的pdf推导如下:
采样的AreaLight的面的面积是A,方向是ω,由于pdf(ω)的积分是1,我们有:
根据dω和dA的关系,上面的积分可以从方向转成点的积分:
所以可得到:
把最后这个pdf做irradiance的估计。
必须明白一个原则:样本是什么,就需要计算该样本的pdf,例如如果样本是点,那么pdf就是点的pdf,样本是方向,那么就是方向的pdf。