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 伽马矫正CurvesColor Space,得到的radiance并非颜色,需要做变换

来源

[1]Games101. 闫令琪

posted @ 2023-04-18 17:37  ETHERovo  阅读(64)  评论(0编辑  收藏  举报