我目前正在尝试了解由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);
可有人请解释的只是在投放的单一射线,而不是两者的缺点是什么?我从来没有听说过这种技术,并且我很好奇这种交换是什么,因为它会导致复杂度大大降低。
您是否看过[此演示文稿](https://docs.google.com/open?id=0B8g97JkuSSBwUENiWTJXeGtTOHFmSm51UC01YWtCZw)解释所有内容,并明确链接到该网站? – KillianDS 2012-03-28 11:18:11
是的,我已阅读演示文稿,它很棒!我正在寻找的是一个更深入的解释,说明如何只投射单个射线影响算法的效率。为什么他决定对于深度达到2的两个射线应该进行评估,但不要事后(即是否有任何推理背后为什么它恰好是2或者是或多或少是随机的?)。 – crapper 2012-03-30 01:09:50
或多或少是随机的,但这个想法可能是,你会从你的前几次反射和吸收中获得最多的颜色强度。你反映/折射的越深,应该是更微不足道的贡献。 – KillianDS 2012-03-30 11:58:28