gpt4 book ai didi

algorithm - 路径追踪 : scaling color

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:09:47 25 4
gpt4 key购买 nike

我正在尝试阅读 http://www.kevinbeason.com/smallpt/ 的来源特别是有一件事我无法理解。在第 55 行,它说 f=f*(1/p)

这是什么?它有什么作用?更重要的是,为什么它读起来完全像这样?是否有某种启发式方法可以使图像收敛得更快?

也就是说,在我看到的文献中:

function radiance
...
return Le(x) + R(p) * radiance(rn)

重要的是 R(p) - 我不太明白它的作用,但对于 99% 的人来说,这不是上面的 f..

拜托,有人可以阐明这一点吗?

最佳答案

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

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

if (++depth>5) 
if (erand48(Xi)<p) f=f*(1/p);
else return obj.e;
  • 首先,这个函数radiance是一个递归函数(调用自身)
  • 当光线照射到玻璃表面时,光线追踪器必须确定它是进入还是离开玻璃以计算折射光线。
  • f 是对象的颜色。
  • p 是表面颜色的最大分量 (r,g,b)。
  • #55 行,如果递归深度大于 5,我们执行俄罗斯轮盘赌
  • 我们使用p 根据表面反射率随机停止递归。
  • f=f*(1/p) 使用 p - f 的最大分量对每个分量进行归一化,

这样,

f.x = f.x / (max(f.x, f.y, f.z))
f.y = f.y / (max(f.x, f.y, f.z))
f.z = f.z / (max(f.x, f.y, f.z))

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

关于algorithm - 路径追踪 : scaling color,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13203767/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com