移动端正交相机下阴影错误的问题

我们发现ue中的shadowmap不适配正交相机,研究了一下发现,主要是阴影计算这里使用了screenPosition.w作为深度写入(如图),而正交相机的这个值是1

[Image Removed]

screenPosition实际是这里赋予的,可以看到没有考虑正交相机的情形,因此来源于screenposition.w的大部分效果是不正确的

[Image Removed]

我们准备的一个修改是直接修改SvPositionToResolvedScreenPosition这个函数,正交相机生效的情况下,给screenposition.w赋予正交相机的深度。类似于result.w = ConvertFromDeviceZ(SvPosition.z);return result;这样的修改,但是这个函数牵扯的东西有点多,想询问一下有什么更多修改建议

Hi,

其实我也不敢肯定正确的改法是什么,你们应该之前提过这个问题,我当时把问题反馈给mobile team了,但是暂时还没有修复。我上次给了一个改法,不知道你们有测试过吗?

[Image Removed]​

感谢回复

这个改法应该也有效果,但是只对阴影起效,主要是因为screenposition.w这个值的错误可能会导致更多依赖它的效果出问题,所以想着在源头上做个处理

目前我们正在最初的改法上测试,如果有啥其它问题可以继续交流

好的,有问题继续交流