我听说,蒙特卡洛射线追踪器(基于路径跟踪算法)的质量比分布式(随机)引擎要现实得多。我试图理解为什么,但是我才刚刚开始。
为了深入研究这个主题并了解基础知识,有人可以指出我正确的方向吗?算法的哪一部分导致更逼真的渲染结果?
我听说,蒙特卡洛射线追踪器(基于路径跟踪算法)的质量比分布式(随机)引擎要现实得多。我试图理解为什么,但是我才刚刚开始。
为了深入研究这个主题并了解基础知识,有人可以指出我正确的方向吗?算法的哪一部分导致更逼真的渲染结果?
Answers:
术语“分布式射线追踪”最初是由Robert Cook在1984年的论文中提出的。他的观察是,为了在光线跟踪器中执行抗锯齿,渲染器需要执行空间上采样-也就是说,要获取比图像中像素数更多的样本(即,拍摄更多的光线)并合并其结果。例如,一种方法是在一个像素内拍摄多条光线并求平均其颜色值。但是,如果渲染器已经在每个像素中跟踪了多条射线以获得抗锯齿图像,则这些射线也可以“分布”在其他尺寸中,而不仅仅是像素位置以采样单条射线无法捕获的效果。重要的一点是,在空间上采样的基础上,这没有任何额外的成本,因为无论如何您已经在追踪这些额外的光线。例如,
蒙特卡洛射线追踪是一个有点含糊的术语。在大多数情况下,它是指解决渲染方程式的渲染技术,是由吉姆·卡吉亚(Jim Kajiya)于1986年使用蒙特卡洛积分引入的。几乎所有解决渲染方程式的现代渲染技术(例如路径跟踪,双向路径跟踪,渐进光子映射和VCM)都可以归类为Monte Carlo射线跟踪技术。蒙特卡洛积分的思想是,我们可以通过在积分域中随机选择点并在这些点取函数值的平均值来计算任何函数的积分。在较高层次上,在蒙特卡洛光线追踪中,我们可以使用此技术对到达像素内的摄像机的光量进行积分,以计算像素值。例如,路径跟踪器通过随机地选择像素内的一个点以拍摄第一条射线来执行此操作,然后继续随机选择一个方向以继续在其着陆的表面上,等等。如果要进行运动模糊,也可以在时间轴上随机选择一个位置,如果要进行景深,我们也可以随机在光圈上选择一个点,或者...
如果这听起来与分布式射线跟踪非常相似,那是因为!我们可以将分布式光线跟踪视为对蒙特卡洛算法的非正式描述,该算法对诸如软阴影的某些效果进行采样。Cook的论文缺乏数学框架来真正合理地对此进行推理,但是您当然可以使用简单的Monte Carlo渲染器来实现分布式射线跟踪。值得一提的是,分布式射线追踪没有任何关于全局照明效果的描述,这自然是在渲染方程式中建模的(应该提到的是Kajiya的论文在Cook的论文发表两年后出版)。
您可以将Monte Carlo射线跟踪视为分布式射线跟踪的更通用版本。蒙特卡洛射线追踪包含一个通用的数学框架,可让您处理几乎所有的影响,包括分布式射线追踪论文中提到的那些。
如今,“分布式射线跟踪”实际上并不是用来指代原始算法的术语。通常,您会结合“分布效果”听到它,“分布效果”就是诸如运动模糊,景深或柔和阴影之类的效果,这些效果无法通过单样本射线追踪器处理。
在“ 分布式光线跟踪”中,您随机采样了BRDF 可能不喜欢的方向上的许多光线。而在蒙特卡洛光线追踪或简单的路径追踪中,您只能沿BRDF首选的方向对一条光线进行采样。因此,路径跟踪具有两个明显的优点:
因此,路径跟踪将为您带来更好的结果。