Algorithm 路径跟踪:缩放颜色

Algorithm 路径跟踪:缩放颜色,algorithm,graphics,rendering,raytracing,Algorithm,Graphics,Rendering,Raytracing,我正在努力阅读的来源,尤其是有一件事我不能掌握。在第55行,上面写着f=f*(1/p) 这是什么?它有什么作用?更重要的是,为什么它读起来像这样?这是一种使图像更快收敛的启发式方法吗 换句话说,我在文学作品中看到: function radiance ... return Le(x) + R(p) * radiance(rn) 重要的是,R(p)-我真的不明白它是做什么的,但99%的人不是从上面看的f 请,有人能解释一下吗?我想你的答案就在这里,它包含了对smallpt的显式

我正在努力阅读的来源,尤其是有一件事我不能掌握。在第55行,上面写着
f=f*(1/p)

这是什么?它有什么作用?更重要的是,为什么它读起来像这样?这是一种使图像更快收敛的启发式方法吗

换句话说,我在文学作品中看到:

function radiance
     ...
    return Le(x) + R(p) * radiance(rn)
重要的是,
R(p)
-我真的不明白它是做什么的,但99%的人不是从上面看的
f


请,有人能解释一下吗?

我想你的答案就在这里,它包含了对
smallpt
的显式照明版本的逐行解释,重新格式化为75%长

简而言之,行
#55
位于函数
radiance
内,其中沿光线的辐射估计值是估计的

if (++depth>5) 
    if (erand48(Xi)<p) f=f*(1/p); 
    else return obj.e;

代码为
*
定义了运算符重载,但没有为
/
定义运算符重载,这就是为什么
f=f*(1/p)
而不是
f=f/p

我想你的答案是这样的,它包含了对
smallpt
的显式照明版本的逐行解释,重新格式化为长75%

简而言之,行
#55
位于函数
radiance
内,其中沿光线的辐射估计值是估计的

if (++depth>5) 
    if (erand48(Xi)<p) f=f*(1/p); 
    else return obj.e;

代码为
*
定义了运算符重载,但没有为
/
定义运算符重载,这就是为什么
f=f*(1/p)
而不是
f=f/p
谢谢。我以前读过幻灯片。然而,我的问题是,究竟为什么
f=f*(1/p)
?为什么不
f=f*(42/p)
或者为什么
f
不是r,g,b的最小分量?为什么要使用
f=f*(1/p)
来停止?为什么深度不足以退出递归?顺便说一句,我想这件事是在第71行决定的,不是在第55行。谢谢。我以前读过幻灯片。然而,我的问题是,究竟为什么
f=f*(1/p)
?为什么不
f=f*(42/p)
或者为什么
f
不是r,g,b的最小分量?为什么要使用
f=f*(1/p)
来停止?为什么深度不足以退出递归?顺便说一句,我认为折射问题是在第71行决定的,而不是在第55行。