GDC 2019《戰神4》開發解讀:全域性光照
(騰訊北極光工作室長期招聘中......)
戰神4作為18年的GameOfYear,可以說各種牛逼。
Sony Santa Monica能夠將遊戲行業裡的旗艦遊戲繼續推進,並且在品質,設計上都有創新,實屬不易。
過程中也是比較曲折,難怪主創看到專案最後成功忍不住淚奔。
這裡是全域性光照技術的呈現,簡單說間接光照在GIVolume+NormalizeEnvMap上終於比較成熟了(《戰神4》《蜘蛛俠》都類似做法了),比lightmap有比較明顯的優勢了,實際應用中完全取代Lightmap比較ok了。
這裡是簡要的mindmap,內容不多,但是含金量不錯的,對於我們接下來要提升的全域性光照方面也頗有啟發。
然後這裡必須要來一個讓我下巴掉地上的東東:戰神地圖編輯器是在maya裡的,木有自己的專屬編輯器。。。
GIVolume優劣
這個是作為indirect diffuse lighting的解決方案,之前是用的lightmap,相比lightmap,GIVolume有這些好處:
GIVolume作為一個3D光照資訊,本身確實比2D的lightmap方方面面光照能力強很多,包括
•可以讓靜態物件,動態物件光照資訊更統一(lightmap只能作用在static obj上,動態物件要別的方式來弄,常常不一致)
•可以給volume fog,particle這種來打間接光照
•可以增強IBL(image based lighting,或者我們常說的EnvMap),給IBL進一步的空間資訊,提升光照屬性
pipeline優勢:
•和geometry解耦,lightmap是重要和mesh uv搞飛機真心煩
所以GIVolume最後成為《戰神4》的選擇,其實也是《蜘蛛俠》和<horizon zero dawn>(感謝
燜茄子
提供資訊)的選擇,不知道是不是內部大家溝通的結果,都是sony內部的studio。。。
安柏霖:[GDC19]《蜘蛛俠》開發解讀(3/4)--Runtime篇zhuanlan.zhihu.com
GIVolume的技術細節
這個就比較直接了:
•1m一個voxel的精度來存
•美術放置box,box內部就會cook GI
•會有漏光的情況,通過normal方向偏移搞定
•GI裡面存2band的SphericalHarmonic係數,和天空的visibility
AO和ambient shadow
戰神是用了,ssao+ambient shadow+ao map來達到較好的陰影裡的“陰影”效果。
(沒有任何ao或者ambient shadow資訊)
ssao+ao map(藍色框裡面的)+ambient shadow(紅色框裡的)
ambient shadow是來自last of us裡的。
這裡有記錄:
https://blog.csdn.net/toughbro/article/details/43876137blog.csdn.net
取樣角色的capsule即可,不贅述。
IndirectSpecularLighting
捕獲IBL就不贅述。
這裡和CallOfDuty裡做法一樣,要做一個normalize(作者很委屈的表示這個是他寄幾想出來的)。
call of duty的物理光照內容可以看這裡:
https://blog.csdn.net/toughbro/article/details/16927505blog.csdn.net
在戰神裡是要這樣做:
•把envmap的光照資訊做normalize
•然後用GI的亮度來做最終的indirect specular lighting
這樣的理由可以看下圖的對比:
可以看到,沒有GI資訊的時候,IBL帶來的反射,在左下有嚴重的漏光,這是因為indirect specular lighting缺乏空間資訊,所以就要從GI中拿。
拿的方式就是NormalizeEnvMap*GI亮度這樣去做。
戰神這裡總結的很不錯:GI提供空間細節,cubemap提供角度細節。
騰訊北極光工作室招聘,長期有效:[招聘貼]Call For HardcoreDeveloper
作者:安柏霖
專欄地址:https://zhuanlan.zhihu.com/p/74569737
相關文章
- GDC 2019《蜘蛛俠》開發解讀:如何打造一款AAA級遊戲?遊戲
- 寫給美術看的Unity全域性光照詳解(引數篇)Unity
- Vue 原始碼解讀(5)—— 全域性 APIVue原始碼API
- Apache Hudi重磅特性解讀之全域性索引Apache索引
- 寫給美術看的Unity全域性光照技術(理論篇)Unity
- MySQL鎖問題分析-全域性讀鎖MySql
- vue-cli4中全域性引入jqueryVuejQuery
- 近未來世界+全域性光照渲染,絕地求生新遊《PUBG:NEW STATE》正式公佈
- 資料庫大牛李海翔詳解全域性讀一致性技術資料庫
- 人工製作 vs 系統自動化:《神祕海域4》 中的戰鬥AI平衡 解讀AI
- flutter 裡面的全域性變數(給web開發者)Flutter變數Web
- vue webpack開發訪問後臺介面全域性配置VueWeb
- 基於螢幕空間的實時全域性光照(Real-time Global Illumination Based On Screen Space)
- 頂級玩法設計師GDC分享:《戰神》如何做出最優秀的戰鬥系統
- Angular4 實戰開發Angular
- 短視訊程式開發,Flutter 夜間模式 全域性字型Flutter模式
- 全域性角度出發討論敏捷敏捷
- 全域性性謀劃、戰略性佈局、整體性推進智慧技術
- 【GDC 21】《對馬島之魂》戰鬥系統講解
- KDD 2019論文解讀:多分類下的模型可解釋性模型
- vue定義全域性變數和全域性方法Vue變數
- 【UE4_光照】UE4中光照的常見問題和解決方案(二)使用手冊
- 【UE4_光照】UE4中光照的常見問題和解決方案(一)使用手冊
- ICCV 2019 提前看 | 三篇論文,解讀神經網路壓縮神經網路
- OpenGL 基礎光照詳解
- Unite 2019|Unity的光照烘焙技術(上)Unity
- 框架(frameset),全域性屬性框架
- apache伺服器全域性配置詳解(全)Apache伺服器
- 你是否真的瞭解全域性解析鎖(GIL)
- 全域性變數變數
- CMake 屬性之全域性屬性
- PS4《戰神》銷量突破1000萬
- 2019年4月程式語言TIOBE指數簡要解讀
- 《暗黑破壞神4》總監和主管被暴雪解僱 開發或受影響
- Flutter完整開發實戰詳解(二、快速開發實戰篇)Flutter
- js正則全域性匹配引發的血案JS
- vue2.0全域性路由守衛(全域性控制登入)Vue路由
- SysML 2019提前看:神經網路安全性神經網路