我目前正在嘗試瞭解由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