[siggraph17]decima engine的光照和aa技術

這裏寫圖片描述
link:http://advances.realtimerendering.com/s2017/DecimaSiggraph2017-final.pptx
siggraph17上面killzone和開發商guerrilla和小島工作室兩個工程師帶來,關於decima engine的光照和AA技術。
decima engine本來是guerrilla給killzone系列開發的引擎,後來擴展到guerrilla的horizon產品上,現在用在小島的新遊戲上,逐漸走上了一流in house engine;

這篇blog中會多記錄一些height fog, AA, checkerboard相關的技術,讀起來都很棒的。

ggx spherical area light

這裏寫圖片描述
可能有一些讀者看了blog就不看文章了,這裏特地說明下,這個文章裏有說到ggx spherical area light,但是目前還不太有對於area light的應用,所以暫時略過,有興趣的同學可以在這裏看看。

height fog

這裏寫圖片描述
decima使用的是physically based atmosphere的模型,這裏有一個細節的記錄:
http://blog.csdn.net/toughbro/article/details/7800395
簡言之:要根據物理模型計算raleigh/mie的inscattering/outscattering/absorption,把計算結果存入LUT加速計算過程。
到了horizon的開發中,項目組希望加入heightfog,那麼就非常的直接要在fog的物理模型上加入。
玩轉了數學公式之後,其實是非常直接的。
這裏寫圖片描述
這裏的用於lerp的alpha項就是height相關的項目。

checkerboard render & AA

先看下decima的結果:
這裏寫圖片描述

可以比較明顯的看到2160p的checkerboard在同樣效率下有比較好的結果。
然後我們在看下pipeline:
這裏寫圖片描述

checkerboard技術

這個技術在遊戲行業中是從rainbow6:siege開始的,可以看這裏的notes:
http://blog.csdn.net/toughbro/article/details/70666715
這是一個每幀只渲染1/2甚至1/4buffer(一般這種情況帶msaa),然後通過temperal信息(一般至少保留前一幀),然後來做upsampling,進而組合成一個全分辨率的方式。
由於fragment數量大幅度降低,所以效率提升是異常明顯的。

checkerboard in decima
可以看上面的pipeline,中間的yC0Cg部分先不看,對比最後結果
- 渲染一半分辨率
- 然後不同幀直接直接做temperal reprojection+平均混合
這裏寫圖片描述
這樣就組合出來最終結果,比rainbow 6的方案更加直接一些,沒有那麼多的filter等等。

FXAA in decima
然後decima還發現先做fxaa再做checkerboard merge,效果更好(道理也是比較直接的)。
所以結合fxaa的pipeline是;
這裏寫圖片描述

七巧板拼合
這裏寫圖片描述
好了我們再看下這個pipeline中間的部分,發現奇怪的圖被打散然後拼在一起,wtf?
這裏的方法讓我樂半天,這腦洞可以的,膝蓋獻上!!!
decima表示,fxaa和temperal技術都需要快速的方案方形的四個角的pixel,而直接的使用的話,是斜角的pixel讀取,這個速度很慢。
所以就用七巧板的方法,把圖截開,然後旋轉45度,然後拼合在一起,然後sample。
並且轉到YCoCg來對luminance做快速訪問。

sum
checkerboard部分可以說是比較精彩的;
heightfog在理解數學的基礎上,也是比較直接,然後。。。效果很讚的!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章