在路径跟踪中选择反射或折射


14

我正在尝试在路径跟踪器中实现折射和传输,但是我不确定如何实现它。首先,一些背景:

当光射到表面上时,其中一部分会反射,一部分会折射: 在此处输入图片说明

菲涅耳方程式给出了多少光反射与折射的关系 在此处输入图片说明

在递归光线跟踪器中,简单的实现方式是拍摄光线进行反射和折射,然后使用菲涅耳进行加权求和。

R=Fresnel()T=1RLo=RLi,reflection+TLi,refraction

但是,在路径跟踪中,我们仅选择一条路径。这是我的问题:

  • 如何选择以无偏见的方式进行反射或折射

我的第一个猜测是根据菲涅耳随机选择。又名:

float p = randf();
float fresnel = Fresnel();
if (p <= fresnel) {
    // Reflect
} else {
    // Refract
}

这是正确的吗?还是我需要某种校正因子?因为我不走两条路。


俄罗斯轮盘
v.oddou '16

Answers:


6

TL; DR

是的,您可以那样做,只需将结果除以选择方向的概率即可。

完整答案

在路径追踪器中进行采样的主题实际上允许反射和折射的材料都稍微复杂一些。

让我们先从一些背景开始。如果在路径跟踪器中允许使用BSDF(而不仅仅是BRDF),则必须在整个球体上进行积分,而不仅仅是正半球。蒙特卡洛样本可以通过多种策略生成:对于直接照明,可以使用BSDF和光采样;对于间接照明,唯一有意义的策略通常是BSDF采样。采样策略本身通常包含关于采样哪个半球的决定(例如,是否计算反射或折射)。

在最简单的版本中,光采样通常对反射或折射不太重视。它根据光源的特性对光源或环境图(如果有)进行采样。您可以通过仅选择材料具有非零贡献的半球来改善环境图的采样,但是通常忽略其他材料属性。请注意,对于理想的平滑菲涅耳材料,光采样无效。

对于BSDF采样,情况要有趣得多。您描述的情况涉及理想的菲涅尔曲面,其中只有两个起作用的方向(因为菲涅尔BSDF实际上只是两个增量函数的总和)。您可以轻松地将积分拆分为两个部分的总和-一部分反射,另一部分折射。正如您提到的那样,由于我们不想在路径跟踪器中双向导航,因此我们必须选择一个。这意味着我们只想选择一个数字就可以估算出数字的总和。这可以通过离散蒙特卡洛估计来完成:随机选择加数之一,然后除以被选中的概率。在理想情况下,您希望使采样概率与加数成正比,但是由于我们不知道它们的值(如果我们知道它们的值,就不必估算总和),我们只是通过忽略一些因素来估算它们。在这种情况下,我们忽略入射光量,仅使用菲涅耳反射率/透射率作为我们的估计。

因此,对于光滑菲涅尔表面的情况,BSDF采样例程是随机选择一个方向,其概率与菲涅耳反射率成正比,并在某个点上将该方向的结果除以拾取方向的概率。估算器将如下所示:

大号一世ω一世Fθ一世Pω一世=大号一世ω一世Fθ一世Fθ一世=大号一世ω一世

ω一世=ϕ一世θ一世大号一世ω一世Fθ一世Pω一世Fθ一世

对于更复杂的BSDF模型(例如基于微面理论的模型),采样会稍微复杂一些,但是通常也可以应用将整个积分拆分为有限的子积分之和,然后再使用离散蒙特卡洛的想法。


1
这很有趣,但是我很困惑。您能否阐明“将方向的结果除以选择方向的概率来划分”是什么意思?如果不是二进制选择而是从连续分布中选择方向,则概率不为零吗?
trichoplax

1
@trichoplax:是的,但是在那段中,我仅描述了用于(电介质)菲涅耳BSDF的采样技术-理想的光滑表面,这是两个Dirac delta函数的总和。在这种情况下,您将以某种离散的概率选择其中一个方向。如果是非增量(有限)BSDF,则根据概率密度函数生成方向。不幸的是,增量和非增量情况必须分开处理,这会使代码有些混乱。可以在例如Walter等人的文章中找到有关采样微面BSDF的更多细节。等 [2007]文件。
ivokabel '16

2
@RichieSams:Walter等。等 [2007]基本上仍然是电介质粗糙表面的最新技术,但要使其正常工作,您需要一个良好的采样,该采样最近由Heitz和D'Eon在2014年发表的论文“基于微面的重要采样的BSDF”中发表。使用可见法线的分布”。并请注意,这是一个单散射模型,它忽略了微刻面之间的相互反射,从而使其在较高的粗糙度值下明显变暗。有关更多详细信息,请参见我的问题“单散射微面BSDF模型中的能量损失补偿”。
ivokabel '16

5
只是想指出一点,如果您按照问题的建议选择概率= fresnel(),那么当您除以概率时,就可以抵消通常要乘以的菲涅耳因数。因此(在离散的二狄拉克情况下)最终得到的光线贡献根本不包含任何菲涅耳因子。这是标准的重要性抽样理论,但是我想指出这一点是一个潜在的令人困惑的问题。
内森·里德

2
@Nathan,我将您的通知合并到了答案中。
ivokabel '16
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.