寫給現(xiàn)在還在用光子跑圖的人
人氣34,017
評(píng)論104
推薦5
2016-12-07 20:08
長(zhǎng)期以來(lái)一直有很多人還在用光子圖出圖
覺(jué)得那樣可以省渲圖時(shí)間還可以跑4倍的大圖
各路教程里也都帶有光子圖出圖的步驟
但實(shí)際上這些做法都是錯(cuò)誤和不必要的
因?yàn)樗麄冞€沒(méi)有了解VR算法的一些基本原理
我們知道光子圖是由VR的發(fā)光貼圖引擎計(jì)算產(chǎn)生
發(fā)光貼圖是通過(guò)對(duì)場(chǎng)景采樣并處理樣本上的照明信息來(lái)計(jì)算全局照明的
采樣時(shí)產(chǎn)生的樣本越多意味著全局照明的效果越精確
而發(fā)光貼圖的采樣過(guò)程又是以像素為基礎(chǔ)來(lái)進(jìn)行
越少的像素上產(chǎn)生越多的樣本表示采樣的精度越高
相應(yīng)出圖的質(zhì)量也越好
控制采樣精度的是最小比率和最大比率這兩個(gè)參數(shù)
它們的取值決定了像素和樣本的比例關(guān)系
這種比例關(guān)系具體如下:
當(dāng)最小、最大比率為0,1個(gè)像素生成1個(gè)樣本
當(dāng)最小、最大比率為-1,4個(gè)像素生成1個(gè)樣本
當(dāng)最小、最大比率為-2,16個(gè)像素生成1個(gè)樣本
當(dāng)最小、最大比率為-3,64個(gè)像素生成1個(gè)樣本
也就是說(shuō),
最小、最大比率為0時(shí),每1個(gè)像素都能采一次樣,表示采樣的精度很好
最小、最大比率為-3時(shí),每64個(gè)像素才能采一次樣,表示采樣的精度較差
像素和樣本的增減變化規(guī)律都是以2的偶次方倍來(lái)進(jìn)行
比如2的2次方為4,4次方為16,6次方為64等等,以此類推
最小、最大比率的區(qū)別在于采樣的級(jí)別不同
其中最小比率控制的是采樣的起始精度
最大比率控制的是采樣的最終精度
比如將最小、最大比率設(shè)置為-3/0
這表示采樣以-3的精度開始,以0為結(jié)束
按順序-3、-2、-1、0一共四級(jí)
這意味著采樣的過(guò)程會(huì)計(jì)算4遍
因?yàn)樽钚 ⒆畲蟊嚷手苯佑绊懼l(fā)光貼圖的采樣精度
而它們的取值又影響了采樣和像素之間的比例關(guān)系
所以根據(jù)這個(gè)關(guān)系來(lái)靈活設(shè)置最小、最大比率
就完全可以自由控制不同分辨率下出圖的質(zhì)量
從而摒棄先跑光子再出大圖這種多此一舉的做法
比如最小、最大比率用-3/0渲一張800x600的圖
實(shí)際就等于用-4/-1渲一張1600x1200的圖
也等于用-5/-2渲一張3200x2400的圖
也等于用-6/-3渲一張6400x4800的圖
因?yàn)楦鶕?jù)像素和樣本的比例換算關(guān)系
以及同樣的采樣計(jì)算次數(shù)
這四種組合方式下計(jì)算得到的采樣精度和出圖質(zhì)量都是一致的
注意它們的換算方法是每當(dāng)最小、最大比率同步增或減一級(jí)
對(duì)應(yīng)的圖幅大小就增或減2倍
再比如很多人習(xí)慣用-3/0跑400的小圖,然后再去跑1600的大圖
那其實(shí)只要用-5/-2直接去跑1600的大圖就可以了
這樣可以避免你再去手動(dòng)切換調(diào)用光子的麻煩
而兩者的質(zhì)量也是一樣的
直接跑大圖的時(shí)候只要保證換算正確
就無(wú)需糾結(jié)是否違背了所謂光子圖出4倍大圖的講究
如果你不確定用什么參數(shù)去跑一張大圖可以保證質(zhì)量
那你可以嘗試先用一個(gè)較高參數(shù)跑一張小圖
小圖的尺寸以你的眼力可以看清為準(zhǔn)
比如用-3/0跑600x400
如果這個(gè)小圖跑好后看起來(lái)沒(méi)有飄、黑斑或漏光等問(wèn)題存在
那說(shuō)明-3/0的采樣精度就可以滿足這張600x400的圖
相應(yīng)的你就可以用-4/-1直接跑1200x800左右的大圖
或者用-5/-2直接跑2400x1600左右的大圖,以此類推
光子圖的真實(shí)大小是由最大比率確定的
因?yàn)樽畲蟊嚷蕸Q定的是最終采樣精度
跑一張400x300的光子圖當(dāng)最大比率為0時(shí)它才是真正400x300的光子圖
如果最大比率為-1那它其實(shí)只是200x150的光子圖
還有不管是測(cè)試還是最終出圖都不要把最小、最大比率設(shè)置成相同
因?yàn)檫@會(huì)喪失發(fā)光貼圖在采樣時(shí)的自適應(yīng)性特點(diǎn)
是很沒(méi)效率的做法
直接跑大圖很多人最關(guān)心的當(dāng)然還是時(shí)間
因?yàn)榕芄庾舆@種做法圖的就是速度快省時(shí)間
很多人一說(shuō)到直接跑大圖就會(huì)下意識(shí)覺(jué)得時(shí)間肯定很漫長(zhǎng)
但實(shí)際上完全不是那么回事
只要你懂得了發(fā)光貼圖采樣的過(guò)程原理和會(huì)用最小、最大比率來(lái)控制質(zhì)量
因?yàn)槿绻蓸泳认嗤瑒t計(jì)算量也會(huì)相同
計(jì)算所花費(fèi)的時(shí)間自然也會(huì)相近
比如用-3/0跑600x400的光子圖再跑2400x1600
和直接用-5/-2跑2400x1600
兩者的質(zhì)量精度相同
所以渲染花費(fèi)的時(shí)間也是相近的
為了驗(yàn)證這次教程所說(shuō)的東西
最后附上一個(gè)對(duì)比演示視頻
希望可以徹底結(jié)束“跑光子能省時(shí)間”這一錯(cuò)誤觀點(diǎn)長(zhǎng)期以來(lái)對(duì)大家的誤導(dǎo)
關(guān)于光子圖的概念:
其實(shí)“光子圖”一直是個(gè)錯(cuò)誤的叫法
因?yàn)榘l(fā)光貼圖是根據(jù)對(duì)場(chǎng)景采樣和分析樣本的照明信息來(lái)計(jì)算全局光的
在它的整個(gè)計(jì)算過(guò)程中并沒(méi)有涉及到光子的計(jì)算
它計(jì)算產(chǎn)生的文件(也就是所謂的光子圖文件)
其實(shí)只是一個(gè)記錄了場(chǎng)景中樣本的分布、數(shù)量、照明等信息的數(shù)據(jù)文件
完全不包含光子
真正和光子有關(guān)的是VR的另一個(gè)全局光引擎
也就是光子貼圖引擎
它的原理是通過(guò)從場(chǎng)景中的光源發(fā)射出大量光子
并在場(chǎng)景各處來(lái)回撞擊、反彈
然后通過(guò)分析每一個(gè)撞擊點(diǎn)的照明信息來(lái)計(jì)算全局照明
因?yàn)樗枰婕暗焦庾拥臄?shù)量、密度、反彈次數(shù)等方面的計(jì)算
所以它才是真正和光子有關(guān)的全局光算法
它計(jì)算生成的文件才是真正意義上的光子圖文件
因?yàn)殚L(zhǎng)期以來(lái)大家已經(jīng)習(xí)慣把發(fā)光貼圖的計(jì)算文件叫成“光子圖”
雖然是錯(cuò)誤的叫法但是出于約定俗成的考慮
這篇教程里姑且還是繼續(xù)稱之為“光子圖”
評(píng)論(104)