光線追蹤渲染中遇到了自適應方法嗎?

如果引入自適應方法,一片白光,一個全反射只需計算一束光線,那麼計算量就會大量減小,現實中才用了這種方法嗎?本人大一新生,對圖像處理毫不了解,只是在科學計算課上了解到自適應方法,於是想到了這個問題,望解答。


在使用蒙特卡洛方法對某個分布函數進行巨量樣本採樣的情況下,理論上都可以使用自適應方法,光線追蹤演算法顯然符合這樣的特徵。

不過在實踐中,雖然理論上每個路徑與表面交互後會發射至多個方向,但是一般我們並不會對傳播過程中的每個路徑使用自適應方法以找出具有更大貢獻值的一些方向,一方面是因為現代光線追蹤演算法都是轉化為單個路徑的路徑追蹤,所以路徑的傳輸過程中一般不涉及自適應採樣。

現代路徑追蹤演算法中使用的自適應採樣主要集中於兩個地方:

  • 對攝像機光線的自適應採樣
  • 靠近光源一段的末端路徑對海量光源的自適應採樣

一個單幀的路徑樣本數量可能在億級以上,即是說攝像機需要向屏幕空間發射上億條光線,這其中一些位置的光線分布就會比較複雜,容易產生較大的方差,所以對攝像機光線適用自適應採樣。例如下述圖中,適用自適應採樣可以減少大約一半的光線。

另一個是稱為直接光照(direct Illumination)的路徑採樣,在路徑採樣演算法中,每一條路徑除了隨機選擇一個方向進行隨機傳輸,還會直接與光源相連以計算直接光照,這是因為完全隨機的光線可能很難擊中光源,另一方面,直接與光源相連並不會產生額外的方差,並且對於漫反射表面,這能夠大大提高收斂時間。所以每個頂點都需要與場景中所有光源進行直接光照的計算。然而如果此時光源的數量是巨量的,這就可以使用自適應採樣來對光源進行採樣了,例如在皮克斯最新電影《尋夢環遊記》中,那個場景有800多萬個點光源,一般的方法是很難計算的,所以RenderMan在這裡也使用了自適應方法。

更多相關內容可以參見我最近參與《硬影像》播客錄製了一期節目,裡面有一些光與光線追蹤和自適應採樣的討論,歡迎收聽!

收聽地址:全局光照:實時與離線渲染

文字版本:在《硬影像》與羅登導演聊渲染技術

參考鏈接:Sampling Modes - RenderMan 21 - Renderman Documentation


推薦閱讀:

TAG:圖形設計 | 圖像 | 動態圖像設計 | 圖形處理引擎 |