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