Games101-8-路径追踪
Games101-8-路径追踪
概率论知识
Monte Carlo Integration
一种数值方法计算定积分的值,不需要算出原函数。
仅考虑直接光照
这里的wi是随机在半球上采样
引入间接光照
直接光照就按照光源来计算,间接光照递归计算
但是还没完:
光线会爆炸
因此随机选择一条路径进行采样
在一个像素中增加采样点,最后平均,来降低噪声
没有递归出口
俄罗斯轮盘赌
这里就是利用了期望的概念:
事先假定一个概率p,有p的概率发生反射,并且计算的结果除以p,有(1-p)的概率不发生反射,得到0;这种方法得到的结果的期望仍然是Lo,即能量没有损失。
提高路径追踪效率
SPP(samples per pixel)
思考为什么low SPP效果不好会出现噪点?
因为我们的采样时在整个半球上随机采样的,而俄罗斯轮盘赌会终结一些光线,导致路径还没有打到光源就被终止,这条路径返回了空值,相当于这次路径追踪白做了(光线被浪费掉了),本质就是采样不足导致的。
因此我们要么加大采样量(增大路径到达光源的概率),要么尽量不要浪费光线,也就是进行重要性采样,对光源采样,就是先计算对该点颜色贡献最大的直接光照。
在对光源采样时,要把光源平面投影到半球面上,也可以理解为求有效光源(dA*costheta)的立体角。
之后就可以计算Lo
现在我们的策略是先计算直接光照(不使用俄罗斯轮盘赌),再计算间接光照(随机在半球中采样,使用俄罗斯轮盘赌)
再加上判断直接光照是否被遮挡
伪代码:
1 |
|
参考
课程视频
GAMES101: 现代计算机图形学入门
GAMES101_Lecture_15.pdf
GAMES101_Lecture_16.pdf
Games101-8-路径追踪
https://kenny-hoho.github.io/2022/10/13/Games101-8-路径追踪/