您好,登录后才能下订单哦!
今天就跟大家聊聊有关如何实现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进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。