在unity中如何實現開放世界的超大野外環境下時間流逝的光照變化?
01-04
最近在看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端有和怪物獵人類似的遊戲嗎?
※做獨立小遊戲對自己求職遊戲策劃有多少益處?