16 Ray Tracing (Monte Carlo Path Tracing)
关键点
- Monte Carlo Integration
- Distributed Ray Tracing
- Path Tracing
- Russian Roulette(RR)
- Sampling the Light(pure math)
1. Monte Carlo Integration 蒙特卡洛积分
- 对于没有解析式的对象,可以使用该方法求其定积分。在积分范围内随机采样一个值,作为高,使用区间长度作为宽,则利用长方形面积作为积分值的估计;然后,多次随机采样,利用其结果均值作为积分值。
- 取某种随机分布,则不同采样值对应一个概率密度函数PDF值p(xi),而且采样值对应一个高度f(xi),按照如下式子进行蒙特卡洛积分。
- 采样次数越多,越准确。
- 积分公式中不需要考虑积分域,这是因为pdf已经考虑到了。
- 采样、积分和pdf都是相对x而言的。
2. Path Tracing 路径追踪
2.1 Whitted-Style Ray Tracing的问题
- 只是适用于specular reflection镜面反射,不适用于glossy reflection。
- 不适用于漫反射diffuse reflection,所以全局光照效果不好,比如Color bleeding效果
- 解决方法:Rendering equation
2.2 Rendering equation 的问题
2.2.1 求解积分
- 对于一个简单场景:一个像素且只考虑直接光照
- 蒙特卡洛积分
- 着色算法
2.2.2 递归方程
(1) Distributed Ray Tracing
上面的算法只适用于直接光照,即检测到光源,如果检测出的是物体而非光源,那么就考虑物体对着色点的radiance,相当于从着色点对该点做一次蒙特卡洛积分(其中光线wi作为该物体的出射光线方向相反为-wi)。得到FYI, Distributed Ray Tracing 分布式光线追踪。
(2) Path Tracing
- 光线爆炸
当检测光线数量较多时,多次弹射之后数量就会成为指数级变化。
为此,只检测一条光线,得到方法为Path Tracing 路径追踪。
- Noisy
在避免多个方向导致光线爆炸的情况下,只取一个方向形成一条Path,但是会有噪声,所以选取多个Path。即在像素内部选取多个位置sample,得到相应的相机到样本的光线cam_to_sample,分别进行一次Path Tracing,然后在path的级别上进行蒙特卡洛积分。
(3) Russian Roulette(RR) 俄罗斯罗盘赌
- 终止条件
无论在什么时候结束,都会存在能量损失,所以理论上真实情况下是无限次反弹的。设定一个二值概率,表示是否进行下一次弹射或者终止,如果继续弹射则将弹射结果能量Lo除以弹射概率则为结果,否则结果为零,则其期望就是弹射能量。
在实现时,通过生成随机数与概率设定阈值进行对比来判断是否终止。
(4) Sampling the Light(pure math)
当SPP(samples per pixel)比较少时,噪声就会明显,所以对SPP的要求就会很高。
当光源较大时,少量光线就可能打到光源,否则需要更多光线,这是因为能否达到光源是一个随机结果,因此大量的samples被浪费了。这是因为均匀的向周围采样。
因此,不再对着色点周围的半球面做采样,而是对光源做采样,则光线利用效率就会变高。然而,对光源采样就需要进行对光源表面做积分,否则无法进行蒙特卡洛积分,因此需要重写渲染方程。光源的面积微元与立体角的关系如下,先将dA面向w投影,然后利用立体角定义除以距离平方。
然后做变量替换,同时得到新的积分函数f(x)。然后,对光源进行均匀采样。
将光源部分使用sampling the light,对其他间接光照仍然采用着色点采样,并且判断不是光源。在光源采样部分,因为只做一次,所以不需要RR。
算法如下:
最后,在做渲染方程变换并且光源采样时默认光源一定能够打到位置上,因此需要选取到一个光源采样后先判断能否抵达。
但是,对于点光源不方便做处理,可以转换成面光源。
3. Others
3.1 概念和方法
3.2 其他领域
- 如何做到采样
- Importance Sampling 重要性采样理论,如何选择采样的随机分布
- Low Discrepancy Sequences,如何生成随机数
- MIS(Multiple Importace Sampling) 结合两种采样方法。
- Pixel Reconstruction Filter,像素不同位置的path重要性相同吗
- Gamma Correction 伽马矫正,Curves,Color Space,得到的radiance并非颜色,需要做变换
来源
[1]Games101. 闫令琪
本文来自博客园,作者:ETHERovo,转载请注明原文链接:https://www.cnblogs.com/etherovo/p/17329924.html