我目前正在尝试理解Kevin Beason开发的光线追踪器(smallpt:http://www.kevinbeason.com/smallpt/),如果我正确地理解了代码,他随机选择反射或折射光线(如果表面既有反射又有折射)。
第71-73行:
第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);
请问只投射一个光线而不是两个的缺点是什么?我之前从未听说过这种技术,很好奇它的权衡是什么,因为它可以大大减少复杂度。