2016/02/01

Biased vs Unbiased偏差與無偏差算圖

原文 / Biased vs Unbiased
作者 / Vlado
翻譯 / Hammer Chen

因為經常出現這個話題,我決定要寫段簡短的文章說明之,讓大家能看到。有任何問題請讓我知道。理論上,無偏差(Unbiased)的方法是用來計算算圖方程式的積分,如果你根據相同的輸入(3D場景)多次, 將得到,平均化,正確的結果(最終影像), 即便是每個個別的結果可能本身就具有錯誤(雜訊)。這表示如果你執行演算法夠多次的話,平均其結果,將得到正確的影像。你可想像這個多次計算就像是V-Ray 的漸進式算圖(progressive sampler)那樣讓影像請理掉雜訊一樣,每次個別的pass都有相當多雜訊,但是當夠多次的計算,平均之,將得到乾淨的結果。


基於上述理論,當今在市場上沒有一個算圖軟體是真正的無偏差算圖器。 Maxwell, Arnold, Corona, V-Ray這些都用了捷徑才能在可接受的算圖時間內得到可用的影像。也因此影像就是偏差的(Biased)。 每家廠商所用的捷徑不同,例如壓制會產生白點的光路徑、或是限制GI彈跳次數、或是限制最大ray的強度、或是用某種GI快取、或是截斷少貢獻的reflection/refraction rays 、或是限制光線路徑的類型(例如忽略GI caustics)。 幾乎所有當今的算圖器都用上了上述的幾種偷步的技巧,讓你能得到最終影像。因此,無偏差的這個詞多少被濫用,很多人看到無偏差算圖器就會想到以下兩個屬性:

a)沒有GI快取,因此不會有閃爍或是光斑,或是程度較小
b)漸進試算圖影像是以pass來計算,而不是用bucket在算

但是,具有上述功能的算圖器理論上並不代表就是無偏差算圖,再者,一般人常會將GI快取與閃爍、光斑聯想在一起 ,但其實並不一定是絕對。例如V-Ray的光快取與Corona的UHD cache兩者都是GI快取的技術,但通常能產生少的或是很小的閃爍問題(儘管兩個算圖技術閃爍的狀況都跟場景有關)

有幾個算圖器大家視為無偏差的,但其實是偏差的:
  • Maxwell應該有抑制光線的貢獻(大部分是caustics) 為了要在低採樣的狀況下讓影像更乾淨
  • Arnold對光線反彈次數做了限制,預設並不計算caustics,且根據場景材質反射的次數修改材質 如此減少雜訊
  • Corona也用了幾個偏差的技術,截斷最大ray強度 ,限制GI反彈次數,使用GI快取
  • V-Ray也做了幾件事:包含GI快取,截斷最大ray強度...等等
因此,大部分的用戶都把無偏差的算圖器與不做GI快取的聯想在一起,讓我們稱這樣的算圖器『使用者無偏差的』。以上所有的算圖器都可以切換到『使用者無偏差的』算圖模式:
  • Maxwell是套無GI快取的算圖器
  • Arnold是套無GI快取的算圖器
  • Corona可藉由"path tracing+path tracing"模式變成無GI快取的算圖器
  • V-Ray可藉由切換到"brute force+brute force"變成無GI快取的算圖器
然而,就算是『用戶無偏差』的算圖器也不代表就能產生正確的GI影像,例如Maxwell還是會抑制某些會產生白點的光線路徑, Arnold還是只用幾次的光線反彈,並且忽略GI caustics。Corona還是會截斷ray強度減少白點,也還是會限制光線反彈次數。V-Ray還是只會做指定次數的反彈,可能會截斷ray強度..等等。大部分的算圖器具有可調的參數,可以控制這些GI解決方案的錯誤, 因此你可以算出具有不同程度正確性的影像。

敬上,

Vlado

No comments: