在unity中如何實現開放世界的超大野外環境下時間流逝的光照變化?

最近在看unity5.16版本的光照模式,感覺distance shadowmask很好很強,距離之內就是實時計算,距離之外就是靜態烘焙,既能節約烘焙時間還能有不錯的效果,但是……

如果我想做一個類似山崖上的場景

比如下圖

我希望這個場景的時間是可以流逝的,光線能按照日夜變換而變化,同時在極遠的位置能看到質量較差的陰影效果

我應該怎樣取巧呢?


如果遠景也需要動態陰影,distance field 現在是比較好的解決方案。對每個遠景看得見的模型離線烘培一個 distance filed(同樣的模型 distance field 可以復用,縮放旋轉位移都沒關係),然後在遊戲內將這之融合到一個全局的 distance field。

這邊有一個 blog 介紹自己如何實現 distance filed,也不需要 3d texture。

part 1: Signed Distance Field Rendering Journey pt.1

part 2: Signed Distance Field Rendering Journey Pt.2


大場景即便遠近都用cook好的shadow mask也是性能有巨大壓力的,如果遊戲要在主流平台上去跑。

大場景整體來看,不是一個技術,而是指整體遊戲運行效率高。

落實到場景上,可以考慮的包括

  • 多線程 simd
  • culling(frustum cull到portal到software rasterizer),
  • lod相關技術(geometry lod到billboard,mesh和terrain都有),
  • 儘可能的離線化計算(從lightmap到各種可以離線化計算的東東)

這裡面unity有的做了,但是大部分是做的不到位和沒做,沒做的部分根據自己情況,能自己實現多少是多少。


個人覺得應該可以啊,distance shadow在defferlighting下應該滿足你的需求啊?不知道你有沒有實際做過一下,到什麼程度。如果是在PC平台實驗的話肯定可以。Unity出過自己的官方的demo就是晝夜變化的。你可以參照那個demo的實現。多套動態參數然後做融合。我們已經在移動端解決這個效果問題了。只是陰影方向還不能搞。不過大多數時候玩家不太注意方向變化。可以用很高的shadowmap精度。


怎麼實現,直接放進去就能實現

做好lod,動態陰影也不會有什麼問題


可參考下 Orge SkyX或GPU Gems里的關注天空光的章節。可以實現全天實時動態天空和關照變化。


推薦閱讀:

《俠客風雲傳》好評如潮,是因為做對了哪些事情?
unity引擎可以製作無縫超大地圖嗎?
普通程序員,如何轉行至遊戲製作行業?
PC端有和怪物獵人類似的遊戲嗎?
做獨立小遊戲對自己求職遊戲策劃有多少益處?

TAG:遊戲設計 | 遊戲開發 | Unity遊戲引擎 |