今天就跟大家聊聊有關(guān)如何實現(xiàn)unity級聯(lián)陰影的過渡,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
創(chuàng)新互聯(lián)建站-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比科爾沁左翼網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式科爾沁左翼網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋科爾沁左翼地區(qū)。費用合理售后完善,十余年實體公司更值得信賴。
需求
場景的shadowmap 精度勉強滿足場景物件的需求,但對于近距離角色的小掛件投影 衣服厚度 領(lǐng)子等投影精度是不足的。雖然獨占的shadowmap可以實現(xiàn),但為了不增加開銷我嘗試了用級聯(lián)陰影的最近1級做角色陰影。這樣操作很簡單不值得寫這篇內(nèi)容,但這樣做需要解決2個級聯(lián)接縫問題。先上2張效果圖(其實第二張圖是我 獨立shadowmap實現(xiàn)的 為了做背景圖 就帶上他了)
模糊接縫問題
不同級聯(lián)貼圖精度不同 所以出現(xiàn)模糊到清晰的接縫是正常的,unity shader有實現(xiàn)過渡但是注釋寫著球形級聯(lián)會計算錯誤不建議開啟(unity有非球形的級聯(lián)?)。而且我想到一種不需要采樣2張級聯(lián)shadwomap的高性能過渡方法 所以就自己實現(xiàn)了。
我想的辦法是給遠處級聯(lián)陰影做個過渡銳化,不多采樣的銳化。原理很簡單就是讓黑色更黑 白色更白,于是我打開曲線工具 湊了個函數(shù).(綠色這條就是了 黃色是我順便推的他的反函數(shù))。
在Internal-ScreenSpaceShadows.shader 文件中 加入這函數(shù) 并做個過渡調(diào)用 ,然后就有效果了 gif 精度不足 要很仔細看,實際游戲跑起來比較明顯 所以需要解決。
亮度接縫問題
shadowmap 老問題 用 bias和normalBias 這種老配方解決了很多年,但是 出現(xiàn)級聯(lián)陰影后就有問題了 他沒有支持不同級聯(lián)的單獨設(shè)置。這樣就會出現(xiàn)近處的bias剛好,但下一級的就太小導(dǎo)致 Shadow acne .所以更黑 因為明度不同 那么自然會出現(xiàn)接縫了,知道了原理修改也簡單。讓不同距離 設(shè)置不同bias就好了。我這里偷懶直接加個偏移,根據(jù)級聯(lián)距離加不同的量。正式制作建議傳一份其他3個級聯(lián)的bias,在 vertShadowCaster函數(shù)內(nèi)修改,注意當前相機不是場景主相機 所以需要自己傳主相機位置做距離判斷。而且inspector面板的bias 和shader內(nèi)不是一個數(shù)值而且符號相反。
解決了以上2個過渡問題 級聯(lián)陰影可以最近5米單獨一個shadowmap了 精度夠一般角色需求。要更高需求的陰影比如 微微凸起的部分也有陰影,建議用接觸陰影或 無限法則那樣把角色裝備各凸起部分直接做突出些這樣 不會因為精度斷開太多陰影,也可以嘗試用shadowOnly 模式的 renderer擋片 來擋一擋避免斷開。
看完上述內(nèi)容,你們對如何實現(xiàn)unity級聯(lián)陰影的過渡有進一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。