siggraph16,naughtydog的TA帶來的很不錯的處理衣服和頭髮的volumetric渲染的文章。
==項目經驗和心路歷程==
實際在我接觸到的大部分開發者眼裡,大家會覺得naughty dog這樣的引領業界的公司,一定是從「一個英明決策到另一個英明決策」,然後砍瓜切菜般一A到底的把牛逼遊戲做出來。
實際上作者在本文中也反覆提及,中間走了不少彎路,有錯誤的預判,有失敗的嘗試,中間一度感到失去希望,還在團隊確實牛逼,彼此也非常暖心的互奶,作品出來之後,還是叫好叫座的。
最後也是意識到again做一個demo和一個需要任何時候都好看,都高幀數不卡頓的遊戲是非常不同的。
so this is the reality.
本來項目立項是在ps4早期,所以項目組希望達到一個非常「純物理」的渲染,實際開發中也是頗有雄心的做了各種物理正確的渲染和計算。
但是實際是機能明顯還是不夠強勁,所以本文更多的是講一些以更加高效的方式進行近似逼近。
一定程度上也反映了遊戲開發之道,就是「高效近似的藝術」,使用各種技術的組合來以n倍效率達到原本使用昂貴計算才能做到的事情,進而超越了時代的限制。
同時本文中講得很多「失敗的嘗試」,對於其他學習者來說也非常的珍貴,我們也可以看到作者的思考方式,做事方式。
雖然naughtydog的做法中也是各種trick,但是naughtydog是知道什麼是對的,完備做法應該是什麼樣的,在這個基礎上進行近似,這樣的有意為之的方式,可以保持結果的近似度非常高,且有很好的自洽,看似奇勝,實則正和。
實際開發中,有些開發者在不知其所以然的情況下,各種trick,耍小聰明,最後會是讓團隊吃虧了。
=======憤怒的廣告條=========
安柏霖:騰訊北極光《無限法則》《天涯明月刀》誠招程序
=======憤怒的廣告條=========
==cloth==
開發fabric系統的時候,考慮的點:
不同的reflection model
不同的scattering
細節的tiling處理
volumetric self-shadow
==macro weave structure==
這裡的做法很不錯,它是預先生成好一系列的纖維類型,然後做好tiling貼圖,然後供美術使用:
(工具界面看起來雖然比較圡,功能還是很強大的,可以讓美術預先選擇不同的基礎紋理)
maya裡面建模不同的紋理
生成小的tiling貼圖
然後tiling走起,又快又好,簡直優秀。
然後說為啥不用高大上的scan技術,真實照相機一掃,那才牛逼(破音)麼?
因為這樣的預先生成的方式,可以以這樣的組合方式來進行,達到開發效率高,資源儉省的優勢,同時質量也很好。
中間可以也有一個非常犀利的各種組合出衣服的材質編輯的展示。
https://www.zhihu.com/video/1047654437220302848
naughty dog衣服材質編輯
==shader模型==
絲綢類的,對比過ggx anisotropic和kajiya kay,最後ggx理論上和效果上都更牛逼,但是實際玩家看起來差別不大,最後還是kajiyakay了。
不同材質的,使用的「ready at dawn」的。
散射處理
使用了一個非常省的方式,達到一個不錯的模擬:
==hair render==
開始也想嘗試使用純geometry,然後做正確透明排序的方式,但是最後發現還是不行。
頭髮依舊是hair card:
在透明處理上是dither alpha+taa來處理,不過問了在naughtydog工作的同事,說alpha blend也是有的。。
然後這部分技術比較直接,簡單過下:
==unify normal==
使用這種unify的normal來處理頭髮插片之間的過渡,整體光照更加一致,同時也讓backlit更好
==cooked shadow==
cook shadow信息,然後結合realtime shadow來讓頭髮的shadow信息正確。
==scatter==
這裡包括直接光的scatter和backlit的scatter
scatter部分是有physically based的光照模型,包含Single Reflection ®, Double Transmission (TT), Transmission-Reflection-Transmission (TRT) ,但是作者表示這個還是太費了,最後使用了fabric部分的scatter模擬,也還ok。
physical model在ue4現在代碼裡也有,確實計算量多好多倍。
==shader package==
這是一個從動畫電影工業中借鑑來的概念,在動畫片製作中,shader artist會製作一組shader package,
然後把相關的實現做好,暴露出來少量的參數,然後給其他美術使用,同時在開發的過程中,不停的增補。
其實這個對應的就是ue這種的material graph,做得過程中,shader的內部並不向美術開放,屬於一個黑盒的狀態。
任何的修改都需要以需求,以及對shader負責的人來一起迭代完成,這裡的好處就是,始終能夠對於這種關鍵的shader package保持質量和效率的最佳實現。
ppt連結:http://advances.realtimerendering.com/s2016/The Process of Creating Volumetric-based Materials in Uncharted 4.pptx
By zhihu 安柏霖