gdc23, sony santa monica關于god of war的分享;
back ground
- 作者stephen mcauley現在是santa monica的technical director;
- 20年加入santa monica,作為rendering lead,有9年的經驗,之前在ubisoft montreal,做farcry系列,所以提到的一些技術帶有一些farcry的痕跡;
開發思路 & team
因為定位是rendering lead,所以本質上非技術的溝通工作占據比較多的位置;
stephen加入的時候,會做非常多的溝通,以及查閱之前任務的todo list來獲取之前沒有完成的事情等等;
同時自我定位也比較清晰,定位技術團隊為棒球比賽中的擊球手,是一個輔助和強化的作用,但是不是design和artist這種能直接取得勝利的角色;
所以要花很多時間來開發workflow,讓content creator能夠比較快速的開發;
當然在后期也開始注意到,也要讓程序團隊能夠有一個好的流程;
技術
一個物理正確的框架
上來stephen驚奇的發現,光照亮度等等方面沒有“正規化”,會有比較多的美術隨意設置的情況;
太陽光設置使用十幾這種情況,hmmm,戰神也會出現這種情況;
這個實際做起來就是按照正確的物理方式處理就好了:
- 太陽光按照實際的物理數值
- 天光和天空球亮度綁定
- 有一個標準的默認曝光以及tonemapping方法(ACES)
不這么做就在不同階段有這樣或者那樣的問題,戰神這里就是踩到了其中若干問題:
- 缺乏一個標準的“base lighting”,大家通過比較隨意的lighting數值,各方面彼此再配合,小范圍沒問題,內容多了的時候,就會出現physically based lighting啟用階段,美術團隊不按照物理正確方式使用情況下的問題;
簡言之是做了物理正確的lighting基礎,細節可以看frostbite的PBR的文章,寫的更加詳細;
ray tracing cubemap
在反射中,從parallax corrected cubemap替換成raytraced cubemap:
- 這里會使用houdini來生成一些geometry mesh來降低trace ray的消耗:
這里只能說是一種做法,stephen自己也說他們對于raytracing不是很熟悉,所以這里不能簡單作為一種牛逼的或者最優的方案來看,實際行業中的一些proxy mesh(lumen中的方案),voxel等都可以采用;
harden contact shadow(ray marching)
正常我們會使用screen space技術來做contact shadow來達到細節精準的shadow;
戰神中對于contact shadow的需求:
這里奎爺的鼻子這里就是有點不對,這個處理方式就是contact shadow
e.g.
戰神這里使用了較好的辦法:
- 在shadow depth中使用ray marching的方法來做contact shadow;
- 且可以針對area light來做
這樣在精準度等方面都有很好的提升,而且范圍覆蓋方面更大,效率可控,目前看來效果比較好:
效果對比:
(without contact shadow)
(with contact shadow,可以兩個圖切換下看區別,細節可以看弓在atreus身上的投影)