如何实现unity级联阴影的过渡

今天就跟大家聊聊有关如何实现unity级联阴影的过渡,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

创新互联建站-专业网站定制、快速模板网站建设、高性价比科尔沁左翼网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式科尔沁左翼网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖科尔沁左翼地区。费用合理售后完善,十余年实体公司更值得信赖。

需求

场景的shadowmap 精度勉强满足场景物件的需求,但对于近距离角色的小挂件投影 衣服厚度 领子等投影精度是不足的。虽然独占的shadowmap可以实现,但为了不增加开销我尝试了用级联阴影的最近1级做角色阴影。这样操作很简单不值得写这篇内容,但这样做需要解决2个级联接缝问题。先上2张效果图(其实第二张图是我 独立shadowmap实现的 为了做背景图 就带上他了)

如何实现unity级联阴影的过渡  

 
注意手臂 和腰部衣服阴影  



 
如何实现unity级联阴影的过渡  

 
枪械零件阴影  



 

模糊接缝问题

不同级联贴图精度不同 所以出现模糊到清晰的接缝是正常的,unity shader有实现过渡但是注释写着球形级联会计算错误不建议开启(unity有非球形的级联?)。而且我想到一种不需要采样2张级联shadwomap的高性能过渡方法 所以就自己实现了。

我想的办法是给远处级联阴影做个过渡锐化,不多采样的锐化。原理很简单就是让黑色更黑 白色更白,于是我打开曲线工具 凑了个函数.(绿色这条就是了 黄色是我顺便推的他的反函数)。

如何实现unity级联阴影的过渡

在Internal-ScreenSpaceShadows.shader 文件中 加入这函数 并做个过渡调用 ,然后就有效果了 gif 精度不足 要很仔细看,实际游戏跑起来比较明显 所以需要解决。

如何实现unity级联阴影的过渡
如何实现unity级联阴影的过渡

如何实现unity级联阴影的过渡

亮度接缝问题

shadowmap 老问题 用 bias和normalBias 这种老配方解决了很多年,但是 出现级联阴影后就有问题了 他没有支持不同级联的单独设置。这样就会出现近处的bias刚好,但下一级的就太小导致 Shadow acne .所以更黑 因为明度不同 那么自然会出现接缝了,知道了原理修改也简单。让不同距离 设置不同bias就好了。我这里偷懒直接加个偏移,根据级联距离加不同的量。正式制作建议传一份其他3个级联的bias,在 vertShadowCaster函数内修改,注意当前相机不是场景主相机 所以需要自己传主相机位置做距离判断。而且inspector面板的bias 和shader内不是一个数值而且符号相反。

如何实现unity级联阴影的过渡

解决了以上2个过渡问题 级联阴影可以最近5米单独一个shadowmap了 精度够一般角色需求。要更高需求的阴影比如 微微凸起的部分也有阴影,建议用接触阴影或 无限法则那样把角色装备各凸起部分直接做突出些这样 不会因为精度断开太多阴影,也可以尝试用shadowOnly 模式的 renderer挡片 来挡一挡避免断开。

看完上述内容,你们对如何实现unity级联阴影的过渡有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注创新互联行业资讯频道,感谢大家的支持。


新闻名称:如何实现unity级联阴影的过渡
标题链接:http://scyanting.com/article/ghoddj.html