長期以來一直有很多人還在用光子圖出圖
覺得那樣可以省渲圖時間還可以跑4倍的大圖
各路教程里也都帶有光子圖出圖的步驟
但實際上這些做法都是錯誤和不必要的
因為他們還沒有了解VR算法的一些基本原理
我們知道光子圖是由VR的發光貼圖引擎計算產生
發光貼圖是通過對場景采樣并處理樣本上的照明信息來計算全局照明的
采樣時產生的樣本越多意味著全局照明的效果越精確
而發光貼圖的采樣過程又是以像素為基礎來進行
越少的像素上產生越多的樣本表示采樣的精度越高
相應出圖的質量也越好
控制采樣精度的是最小比率和最大比率這兩個參數
它們的取值決定了像素和樣本的比例關系
這種比例關系具體如下:
當最小、最大比率為0,1個像素生成1個樣本
當最小、最大比率為-1,4個像素生成1個樣本
當最小、最大比率為-2,16個像素生成1個樣本
當最小、最大比率為-3,64個像素生成1個樣本
也就是說,
最小、最大比率為0時,每1個像素都能采一次樣,表示采樣的精度很好
最小、最大比率為-3時,每64個像素才能采一次樣,表示采樣的精度較差
像素和樣本的增減變化規律都是以2的偶次方倍來進行
比如2的2次方為4,4次方為16,6次方為64等等,以此類推
最小、最大比率的區別在于采樣的級別不同
其中最小比率控制的是采樣的起始精度
最大比率控制的是采樣的最終精度
比如將最小、最大比率設置為-3/0
這表示采樣以-3的精度開始,以0為結束
按順序-3、-2、-1、0一共四級
這意味著采樣的過程會計算4遍
因為最小、最大比率直接影響著發光貼圖的采樣精度
而它們的取值又影響了采樣和像素之間的比例關系
所以根據這個關系來靈活設置最小、最大比率
就完全可以自由控制不同分辨率下出圖的質量
從而摒棄先跑光子再出大圖這種多此一舉的做法
比如最小、最大比率用-3/0渲一張800x600的圖
實際就等于用-4/-1渲一張1600x1200的圖
也等于用-5/-2渲一張3200x2400的圖
也等于用-6/-3渲一張6400x4800的圖
因為根據像素和樣本的比例換算關系
以及同樣的采樣計算次數
這四種組合方式下計算得到的采樣精度和出圖質量都是一致的
注意它們的換算方法是每當最小、最大比率同步增或減一級
對應的圖幅大小就增或減2倍
再比如很多人習慣用-3/0跑400的小圖,然后再去跑1600的大圖
那其實只要用-5/-2直接去跑1600的大圖就可以了
這樣可以避免你再去手動切換調用光子的麻煩
而兩者的質量也是一樣的
直接跑大圖的時候只要保證換算正確
就無需糾結是否違背了所謂光子圖出4倍大圖的講究
如果你不確定用什么參數去跑一張大圖可以保證質量
那你可以嘗試先用一個較高參數跑一張小圖
小圖的尺寸以你的眼力可以看清為準
比如用-3/0跑600x400
如果這個小圖跑好后看起來沒有飄、黑斑或漏光等問題存在
那說明-3/0的采樣精度就可以滿足這張600x400的圖
相應的你就可以用-4/-1直接跑1200x800左右的大圖
或者用-5/-2直接跑2400x1600左右的大圖,以此類推
光子圖的真實大小是由最大比率確定的
因為最大比率決定的是最終采樣精度
跑一張400x300的光子圖當最大比率為0時它才是真正400x300的光子圖
如果最大比率為-1那它其實只是200x150的光子圖
還有不管是測試還是最終出圖都不要把最小、最大比率設置成相同
因為這會喪失發光貼圖在采樣時的自適應性特點
是很沒效率的做法
直接跑大圖很多人最關心的當然還是時間
因為跑光子這種做法圖的就是速度快省時間
很多人一說到直接跑大圖就會下意識覺得時間肯定很漫長
但實際上完全不是那么回事
只要你懂得了發光貼圖采樣的過程原理和會用最小、最大比率來控制質量
因為如果采樣精度相同則計算量也會相同
計算所花費的時間自然也會相近
比如用-3/0跑600x400的光子圖再跑2400x1600
和直接用-5/-2跑2400x1600
兩者的質量精度相同
所以渲染花費的時間也是相近的
為了驗證這次教程所說的東西
最后附上一個對比演示視頻
希望可以徹底結束“跑光子能省時間”這一錯誤觀點長期以來對大家的誤導
關于光子圖的概念:
其實“光子圖”一直是個錯誤的叫法
因為發光貼圖是根據對場景采樣和分析樣本的照明信息來計算全局光的
在它的整個計算過程中并沒有涉及到光子的計算
它計算產生的文件(也就是所謂的光子圖文件)
其實只是一個記錄了場景中樣本的分布、數量、照明等信息的數據文件
完全不包含光子
真正和光子有關的是VR的另一個全局光引擎
也就是光子貼圖引擎
它的原理是通過從場景中的光源發射出大量光子
并在場景各處來回撞擊、反彈
然后通過分析每一個撞擊點的照明信息來計算全局照明
因為它需要涉及到光子的數量、密度、反彈次數等方面的計算
所以它才是真正和光子有關的全局光算法
它計算生成的文件才是真正意義上的光子圖文件
因為長期以來大家已經習慣把發光貼圖的計算文件叫成“光子圖”
雖然是錯誤的叫法但是出于約定俗成的考慮
這篇教程里姑且還是繼續稱之為“光子圖”
隱藏啥
密密麻麻的,眼睛看著有點累,學習了。