1
在路径跟踪中选择反射或折射
我正在尝试在路径跟踪器中实现折射和传输,但是我不确定如何实现它。首先,一些背景: 当光射到表面上时,其中一部分会反射,一部分会折射: 菲涅耳方程式给出了多少光反射与折射的关系 在递归光线跟踪器中,简单的实现方式是拍摄光线进行反射和折射,然后使用菲涅耳进行加权求和。 [RŤ大号Ø= Fř Ë 小号Ñ ë 升()= 1 - R= - [R ⋅ 大号我,反射+ T⋅ 大号我,折射R=Fresnel()T=1−RLo=R⋅Li,reflection+T⋅Li,refraction\begin{align*} R &= Fresnel()\\ T &= 1 - R\\ L_{\text{o}} &= R \cdot L_{\text{i,reflection}} + T \cdot L_{\text{i,refraction}} \end{align*} 但是,在路径跟踪中,我们仅选择一条路径。这是我的问题: 如何选择以无偏见的方式进行反射或折射 我的第一个猜测是根据菲涅耳随机选择。又名: float p = randf(); float fresnel = Fresnel(); if (p …