因此,我一直想将渲染引擎作为一个夏季项目。我想拍摄静态场景的逼真的照片,而不是像图形这样的实时动态游戏。因此,在研究中,我遇到了两种主要技术。一种方法是尝试使用专门的数值方法(例如双向路径跟踪)直接求解渲染方程。另一种是众所周知的光线跟踪技术。光线跟踪a)简单得多,b)效率更高。此外,似乎在使用路径跟踪技术时似乎需要某种插值/去噪处理,以使图像看起来适当平滑。

我理解递归射线跟踪是一种将射线用于图像的算法。从眼睛中射出并与空间中的物体碰撞。当它们这样做时,会从该点发射更多的光线以计算该点的照明。

我理解路径跟踪就是试图从光源中找到到观察平面的路径。如果在没有偏差的情况下对这些路径进行了足够的采样,则可以使用这些路径以找到的路径作为样本点在空间上进行蒙特卡洛积分。

路径跟踪捕获的不是哪些效果被光线跟踪捕获

#1 楼

一般而言,路径跟踪消除了射线跟踪所做的许多假设。光线跟踪通常假定没有间接照明(或者可以通过常数函数近似估计间接照明),因为每当遮挡相交点时,要处理间接照明,都需要投射许多其他光线。光线跟踪通常假定不存在非光泽反射,因为尽管处理光泽/镜面反射非常容易(您可以反射光线并继续进行射线投射),但是如果您具有非光泽镜面反射,则可以这个问题非常类似于间接照明:您需要跟踪更多的光线,然后在这些光线照射到的地方进行照明。光线跟踪通常还假设没有区域光源,因为将单个光线投射到光源以确定相交点是否在阴影中非常便宜,但是如果您有区域光源,则通常需要投射多个光线到光线上的不同点来确定相交点的阴影量。

一旦您需要用射线追踪打破这些假设中的任何一个,您现在就有一个采样问题:您需要决定如何分配需要跟踪的许多其他光线,以便获得没有明显锯齿的准确结果。

评论


$ \ begingroup $
区域照明如何产生采样偏差?
$ \ endgroup $
–杰克
16年5月18日在14:32

$ \ begingroup $
@Jake:与其余方法相同:您必须投射多个射线,因此需要确定要使用的分布。
$ \ endgroup $
– John Calsbeek
16年5月18日在19:34

$ \ begingroup $
@Jake不,区域灯通常在其表面上的每个点向整个方向的半球发光。如果您想象真实世界区域的灯光是什么样子(例如,计算机显示器显示为纯白色),则可以看到此信息。您可以从任何方向看到发射的光。
$ \ endgroup $
–内森·里德(Nathan Reed)
16年5月18日在23:24

$ \ begingroup $
我要补充一点,分布射线跟踪是介于递归射线跟踪和路径跟踪之间的中间地带。它允许人在递归框架中有点像光泽反射或景深之类的东西。局限性是很容易遇到分支因子的问题:想象一下,每条撞击到表面的射线是否会产生10-100条次级射线;每次弹跳时,射线数将成倍增长!因此,如果您想做的事情不只是数量非常有限的随机现象,那么路径跟踪会更加有效。
$ \ endgroup $
–内森·里德(Nathan Reed)
16年5月18日在23:42

$ \ begingroup $
是的,笔记本电脑示例确实可以解决问题。当然,从每个角度讲,它都是半球形的。非常感谢!
$ \ endgroup $
–杰克
16年5月19日在0:07