Rect Light在较大的Source Width、Source Height情况下会漏光

在Rect Light开启​较大的Source Width、Source Height,且关闭Mega Light、Ray Tracing Shadow,Shadow是VSM的情况下,会出现漏光问题

但是在VSM + Mega Light、VSM + RaytRacing Shadow、关闭VSM的情况下都不会出现这个问题

不太确定是否为BUG​

[Image Removed]

这应该是VSM采样时的一个已知问题或局限性;VSM半影并非像RTS真正追踪光源面积,而是一种采样时对单张Shadowmap的算法模拟(SMRT)。普通Shadowmap么有SMRT或不支持半影所以也不会有问题。关闭SMRT(r.Shadow.Virtual.SMRT.RayCountLocal 0)应该也不会漏光。

除了这种问题太大的半影还有其他品质的问题等,所以制作上控制VSM光源面积是目前的推荐做法。

感谢李文磊老师解答,我想在详细请教一下造成这个的原因

我大概看了下SMRT,我以为造成这个的原因是因为像素在向光源Ray的时候,随机的角度过大导致的,但是我尝试使用r.Shadow.Virtual.SMRT.MaxRayAngleFromLight 缩小角度后,问题并不会解决

所以我想再请教下为什么光源角度过大会导致漏光​

我认为这里的问题和MaxRayAngleFromLight要解决的问题不是同一个问题。询问了下相关同事,目前Rec light如果投射VSM是作为Sphere light来对待的,直观的理解就是很大的面积就是一个很大的球,导致穿了。就类似点光增加半径如果离太近也会穿。他并没有提具体的原理为什么会这样。我也再继续问他。但有一点是明确的,SMRT的大面积局限很大程度靠制作来规避,目前以及可预见的将来也许会做一定改进,但无法完美解决。

好的感谢李文磊老师

经过进一步的沟通,同事给到的回复大概意思同上,就是制作上规避,今后改进预期有限;并没有太多很细节技术原理或代码层面对产生原生的解释。那这个帖子我就先关掉了,有问题再讨论。