如图所示,白噪点在有镜面反射/较光滑物体反射的场景下非常常见:
在做蒙特卡洛光追的时候,我们一般都是按PDF进行采样的,比如下面的场景:
初始视线首先击中漫反射物体,然后它继续对其他物体采样:
对于第二次递归的Ray来说,以它的角度,如果击中的是上面的镜面反射物体,而不是场景中漫反射物体,则几乎一定会反射到光源上:
如果光子从光源出发,也一定会从这角度照亮漫反射物体。所以说这个漫反射物体应该很亮才对。但是由于MC光追一般会选择根据PDF向物体采样或者向光源采样,这就导致没有足够的采样概率采样到镜面反射物体(因为周围肯定有很多其他物体)。
将头顶天花板改为镜面的效果:
再换成漫反射材料,就不太行了:
颜色对比一明显就更完蛋了:
解决方案:
可以从光源发出光线,经过折射、反射以后,碰到漫反射物体就停止,并记录下来,在光线追踪时使用——我认为这就是光子映射的起源。