Unity 阴影——阴影平坠(Shadow pancaking)

阴影平坠(Shadowpancaking)是Unity为减少阴影暗斑而采用的技术,它通过限制光照空间范围提高阴影贴图精度。然而,此方法可能导致大三角面被错误截断,从而产生错误阴影。解决方法包括调整ShadowNearPlaneOffset参数或细分大三角面。适当设置能平衡阴影质量与性能。
摘要由CSDN通过智能技术生成

阴影平坠(Shadow pancaking)

为了减少阴影暗斑(Shadow acne)Unity采取了一种叫做阴影平坠(Shadow pancaking)的技术,它的思路就是减少沿光照方向渲染阴影贴图时使用的光照空间范围,这样子可以提高阴影贴图的精度,减少阴影暗斑(Shadow acne)

如下图所示,主要就是取灯光照射方向和视锥体之间的交集
淡蓝色圆圈表示产生阴影投射的物体
深蓝色矩形框表示原来的灯光空间
绿色线表示经过优化后的近平面,把所有不在视锥体也就是看不见的阴影投射物体都排除了
在这里插入图片描述
这样子,等于我们将阴影投射的物体截断在优化后的灯光近裁剪平面之内(在顶点Shader中),需要注意的是虽然一般情况下表现都没问题,但是遇到了一些特别大的横跨这个近裁剪平面的三角面时就会出问题。
在这里插入图片描述
如上图所示,蓝色的三角面中只有一个顶点是在近裁剪平面之外的,并且被截断了,这样就出问题了,会改变三角面的形状,产生错误的阴影。

在这里插入图片描述

我们可以调整Unity中质量设置中的Shadow Near Plane Offset的值来解决这个问题,让灯光空间的近裁剪平面往后移,但是如果这个值设置高了又会导致阴影暗斑(Shadow acne),因为又提高了阴影贴图所对应的灯光方向的空间。或者我们也可以通过将这个大三角面拆细来解决这个问题。

参考

https://docs.unity3d.com/2019.4/Documentation/Manual/ShadowPerformance.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值