路徑追踪器-採樣尺寸混亂


2

假設我的路徑追踪器每個像素發射64射線(在8x8網格中)。困惑是,在考慮全局照明時,我應該為這最初的64條光線中的每條光線拍攝更多X個隨機光線嗎?這等於拍攝了很大的64 * X *number of bounces光線(各種光線)。而且由於我正在GPU內存上製作路徑跟踪器,因此肯定值得關注。

或者我只拍攝1條隨機射線進行間接照明。這意味著為GI投射的總次級光線等於每個像素64。

這裡的問題是,即使足夠近,也不能保證每個像素投射的所有這64條光線在同一點相交。如果相交位置不相同,則意味著我僅使用1個樣本(當然非常低)來計算間接照明。

現在這又只是針對GI。那面光源呢?我應該為這最初的64條光線中的每條顯式採樣X數量的區域光射線嗎?

我認為這就是庫克在他的分佈式射線跟踪中的文章中提到的內容。他說

Rather than adding more rays for each dimension, the existing rays are distributed in each dimension according to the values of the corresponding parameter. The key is that no extra rays are needed beyond those used for oversampling.

我很困惑,因為在第二種方法下,大多數時候我都看到了算法和代碼片段。為GI投射X個射線。

2)其次,對於直接照明,光路是顯式計算的還是取自為GI創建的樣本?前者意味著,如果我要為每個像素的64條射線中的每條採樣1條GI射線,那麼我還要明確地為光路拍攝另一條射線。隨機採樣的射線,如果指向光源,我將其忽略。

後一種意思是,如果它沒有照射到我的GI光源上,我就只採樣一束光線,如果它照射到我的光源上,我會累積它的顏色作為直接照明。

3

Only one path per sample.

If you had 64 bounces per first hit and 64 per second hit and so forth you'd never get an image.

Edit: And that's why you need to sample each pixel so many times (easily more than 1024 samples) in order to get it to converge, ie get rid of the noise.

As per 2) (from comment below) The 64 primary rays will not hit the same object in the same spot so you will have to calculate everything for each sample.