PM算法看了这么久,也该是到了总结的时候了。自己实现的是PPPM(Probabilistic progressive photon mapping)的一个简化形式。之所以是简化形式是由于我的光子搜集时半径r是恒定的,所以不能得到无偏的解,同时搜集方式使用的是固定圆收集,而非KNN方式。整个算法是以光子图可视化来做的渲染,由于没有做Final Gathering,图片上会有低频噪声,这使得图片看起来会比较脏。另一个问题是噪声控制也做得不好,没有采用MCMC算法来控制光子的发射,光子发射时的采样也是完全随机的,不过对于完全漫反射场景加入了光子的视锥体裁剪和背向面裁剪,这算是一种拒绝性采样了吧。下面是几张稍大场景的渲染结果:
PM的学习就先搞一个段落了,接下来要忙课程作业了。之后还是想往实时GI上面靠拢,可能忙完这段时间后打算先看看VPL之类的算法。