ue4场景没阴影_UE4 Mobile使用动态阴影的一些小结
UE4在Mobile平臺里,除了預先烘焙的靜態陰影之外,對于動態物體一般使用兩種陰影:調制陰影(Modulated Shadows)和級聯陰影(Cascade Shadows,簡稱CSM)。
調制陰影是UE3時代就已經有的產物,關于它的資料不多,基本只知道它比一般的Shadows要省,而且還能隨意更改顏色。調制陰影看上去非常平滑沒有鋸齒,因此可能是用Shadow Volume生成的。根據虛幻官網的介紹,他們使用調制陰影主要用來解決場景打光過亮導致陰影太淡的問題。由于在游戲制作中一般只有一盞燈是去投射動態陰影,如果場景里還有別的燈光,就會導致這盞投射陰影的燈貢獻光照的比例變小,因此投射出的陰影變得不明顯。場景師可能就會因此提出需要,要求加深陰影的顏色。由于調制陰影的顏色是自由控制并不是根據燈光計算出來的,自然比一般的陰影要便宜得多。但是實際使用后,我發現調制陰影存在以下的幾個問題:
(如果只是上述的問題,其實在手機端還是可以接受的,畢竟性能優先嘛。而且在手機上這些問題看上去不是很明顯。真正讓人不能接受的是下面的問題)
2. 調制陰影貌似沒有做視錐體剔除。
我們可以在UE4里簡單創建一個場景,放入一些Movable Objects。我這里放了幾個方塊、一艘船以及大量的工具人。
接著將Directional Light打開Modulated Shadows后,跑到一個空地背對所有的Movable Objects,使用RenderDoc截取一幀畫面。
我們會在RenderDoc里面發現,在ShadowDepths里存了場景里所有Movable Objects的深度信息。并且在渲染完場景后,每個陰影都被渲染了出來,盡管場景里并沒有這些物體。
這意味著即便畫面中沒有多少物體,調制陰影依然會把場景里所有Movable Objects的陰影計算一遍。這么一來當場景有大量Movable Objects的時候,開銷完全沒有節省下來,說不定還增加了不少。
上述這些問題在使用CSM后可以得到完美解決:陰影可以融入任何場景或者靜態陰影;在渲染時也進行了視錐體剔除。我們用RenderDoc截一幀會發現,ShadowDepths只存儲了視錐體內Movable Objects的陰影,渲染陰影的時候也不會渲染視錐體外的Movable Objects。
當然CSM的消耗比調制陰影要大,原理可參考這篇文章:https://docs.microsoft.com/en-us/windows/win32/dxtecharts/cascaded-shadow-maps。根據原理我們可以得知,CSM不僅僅要計算光照,還需要收集場景信息去生成frusta信息以解決陰影的Perspective Aliasing問題,在每個frusta之間還需要做blend去消除接縫。我們可以將Cascade的數量調為1即可減少大量消耗,最好不要超過2。這樣一來CSM的開銷其實并不比調制陰影高多少。
總結:在Mobile平臺里使用動態陰影的時候,如果場景里Movable Objects不多的時候可以考慮調制陰影,其他大多數情況還是用CSM比較好。如果一定要使用調制陰影,最好改一下管線做一下視錐體剔除。我想我可以理解官方為什么快要廢棄調制陰影了。
總結
以上是生活随笔為你收集整理的ue4场景没阴影_UE4 Mobile使用动态阴影的一些小结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: joc杂志影响因子2019_另类统计!2
- 下一篇: python 使用socks 爬虫_小白