gpt4 book ai didi

c++ - 光线追踪 : Only use single ray instead of both reflection & refraction rays

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:31:16 28 4
gpt4 key购买 nike

我目前正在尝试理解由 Kevin Beason (smallpt: http://www.kevinbeason.com/smallpt/) 开发的光线追踪器,如果我正确理解代码,他会随机选择反射或折射光线(如果表面既反射又折射) .

第 71-73 行:

return obj.e + f.mult(depth>2 ? (erand48(Xi)<P ?   // Russian roulette
radiance(reflRay,depth,Xi)*RP:radiance(Ray(x,tdir),depth,Xi)*TP) :
radiance(reflRay,depth,Xi)*Re+radiance(Ray(x,tdir),depth,Xi)*Tr);

谁能解释一下只转换一条射线而不是转换两条射线的缺点?我从未听说过这种技术,我很好奇它的权衡是什么,因为它会大大降低复杂性。

最佳答案

这是一个蒙特卡洛光线追踪器。它的优点是您不会产生呈指数增长的光线数量 - 这可能会出现在一些简单的几何形状中。缺点是您需要对大量样本进行平均。通常,您会进行采样,直到与真实值的预期偏差“足够低”。计算需要多少样本需要一些统计数据 - 或者您只需要大量样本。

关于c++ - 光线追踪 : Only use single ray instead of both reflection & refraction rays,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9906093/

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