本部分继续光线追踪部分,先介绍了蒙特卡洛积分的方法,之后对路径追踪PT的发展和推导过程进行了全面的阐述。
学习视频
GAMES101-现代计算机图形学入门-闫令琪_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1X7411F744?p=16
本节需要准备知识:上一节的渲染方程、概率和微积分的基本知识。下面的蒙特卡洛积分部分也算是提前的知识储备。
蒙特卡洛积分
为什么:
我们想要解决一个定积分,但它可能很难通过解析式解决。
怎么样使用蒙特卡洛积分:
每次采样都采到那些概率高的点,在求总的估计量的时候就要降低这些点的占比,所以是除以概率
例子
注意
路径追踪
Whitted-Style光线追踪
可见:
计算机图形学入门(十三)-光线追踪(基本原理) - 知乎 (zhihu.com)
Whitted-Style光线追踪问题1:对于光滑材质并不能使用镜面反射那种计算方式
Whitted-Style光线追踪是不正确的
但是渲染方程是正确的
见上一节
计算机图形学入门(十六)-光线追踪(渲染方程) - 知乎 (zhihu.com)
一个简单的蒙特卡洛积分应用
继续写
渲染算法
进一步加入间接光照
严重的问题:指数爆炸
修改一下之前的算法
N!=1叫做分布式光线追踪,现在很少有人提了,还是指数爆炸的问题。
真实世界中光线确实不会停下来,但在计算机中可不能这么模拟,但限制弹射次数又会有能量损失(继续弹射的那部分光不去计算了),聪明的人们想出了办法:
俄罗斯轮盘赌
这样最后的光线追踪结果基本上和无限反射结果相同
但仍存在问题
需要提高效率
回想蒙特卡洛积分
渲染方程改写成对面积dA的积分
现在可以回到原来的算法了
路径追踪的代码基本就这些了
遗留问题,点光源怎么办?建议把点光源变成个小面积光源。
一些其他的点
右边就是本节讲述的方法实现
还有一些问题并没有谈到