您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關如何實現unity級聯陰影的過渡,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
需求
場景的shadowmap 精度勉強滿足場景物件的需求,但對于近距離角色的小掛件投影 衣服厚度 領子等投影精度是不足的。雖然獨占的shadowmap可以實現,但為了不增加開銷我嘗試了用級聯陰影的最近1級做角色陰影。這樣操作很簡單不值得寫這篇內容,但這樣做需要解決2個級聯接縫問題。先上2張效果圖(其實第二張圖是我 獨立shadowmap實現的 為了做背景圖 就帶上他了)
模糊接縫問題
不同級聯貼圖精度不同 所以出現模糊到清晰的接縫是正常的,unity shader有實現過渡但是注釋寫著球形級聯會計算錯誤不建議開啟(unity有非球形的級聯?)。而且我想到一種不需要采樣2張級聯shadwomap的高性能過渡方法 所以就自己實現了。
我想的辦法是給遠處級聯陰影做個過渡銳化,不多采樣的銳化。原理很簡單就是讓黑色更黑 白色更白,于是我打開曲線工具 湊了個函數.(綠色這條就是了 黃色是我順便推的他的反函數)。
在Internal-ScreenSpaceShadows.shader 文件中 加入這函數 并做個過渡調用 ,然后就有效果了 gif 精度不足 要很仔細看,實際游戲跑起來比較明顯 所以需要解決。
亮度接縫問題
shadowmap 老問題 用 bias和normalBias 這種老配方解決了很多年,但是 出現級聯陰影后就有問題了 他沒有支持不同級聯的單獨設置。這樣就會出現近處的bias剛好,但下一級的就太小導致 Shadow acne .所以更黑 因為明度不同 那么自然會出現接縫了,知道了原理修改也簡單。讓不同距離 設置不同bias就好了。我這里偷懶直接加個偏移,根據級聯距離加不同的量。正式制作建議傳一份其他3個級聯的bias,在 vertShadowCaster函數內修改,注意當前相機不是場景主相機 所以需要自己傳主相機位置做距離判斷。而且inspector面板的bias 和shader內不是一個數值而且符號相反。
解決了以上2個過渡問題 級聯陰影可以最近5米單獨一個shadowmap了 精度夠一般角色需求。要更高需求的陰影比如 微微凸起的部分也有陰影,建議用接觸陰影或 無限法則那樣把角色裝備各凸起部分直接做突出些這樣 不會因為精度斷開太多陰影,也可以嘗試用shadowOnly 模式的 renderer擋片 來擋一擋避免斷開。
看完上述內容,你們對如何實現unity級聯陰影的過渡有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。