<aside> 💡 在1.20版本之前,要讓使用其他非ASP Shader的材質接收人物陰影(即採樣ASP shadow map)的方式,只能透過手動修改各別shader內的程式碼來達成,詳見本頁第2點。 從1.20版開始,ASP shadow map renderer feature中提供了Screen Space Shadow的選項,這一個功能可以一鍵達成讓人物陰影顯示在其他材質上,且完全避免人物的自陰影,對於無法手動修改shader code的人來說是較為便利的選項。

</aside>

{63B1D37E-3ED2-49D4-8FF6-527978C3BA4A}.png

上圖為一個沒有正確顯示人物陰影(應採樣自ASP Shadow Map)的範例。

原因是人物下方的Terrain材質使用的Shader - Terrain/Lit本身並沒有去採樣ASP Shadow Map,我們可以使用下方的方法1或者方法2來使人物陰影顯示出來。

方法1 - 用ASP Shadow Map中的Screen Space Shadow功能 →適合不想手動修改場景上其他材質Shader code的使用者


{001C8A1A-7CD6-4EAC-AF63-EED040F133BC}.png

將當前的Universal Renderer Data中內的 - ASP ShadowMap feature下,將Use Screen Space Shadow Pass設為true。

ASP的Screen Space Shadow會在Opaque物件渲染完畢之後,透過深度緩衝重建世界座標,以此世界座標來採樣asp shadow map,同時利用material ID(在此時Material pass也已經渲染完畢)來替除掉人物自身的自陰影。

{4F5F73E9-3F65-47DC-869C-C534AE6FD9E0}.png

透過Screen Space Shadow Color參數也能夠調整陰影的顏色與透明度。

{62B466E8-8C72-4CD9-9D32-7A9B9061E0F0}.png

<aside> 💡 使用screen space shadow的好處是完全不需要手動修改其他shader,但缺點是顏色與跟其他PBR材質的陰影會有差異,原因是渲染screen space shadow到場景上時,並沒有當前其他材質的surface資訊,單純的是使用透明度混和。 不過這對高度風格化的動漫風格遊戲來說大多是可以接受的。

</aside>

請確保Hidden/ASP/ScreenSpaceShadows 有在 ProjectSettings中的Always Included Shaders內. 不然screen space shadow的shader並不會一併打包進專案的執行檔中。

如果你有手動在編輯器中開啟過ASP shadow map renderer feature(1.20版之後),這個shader會自動加入Always Included Shaders的清單內。

{8D4EBCED-2F6C-4FBF-BF8F-CF893BB6C8FF}.png