Unity 线性模式下使用metal导致的特效穿透问题

本文链接:https://blog.csdn.net/t163361/article/details/80975930
公司内部项目使用线性模式制作,遇到的一个因为摄像机深度导致的特效穿透问题。
问题描述:
项目做了一段时间,准备演示的时候,发现发布的ios版本,特效类全都跑到场景模型的前边来。
问题查找过程:
由于我们场景使用的是AB打包。开始怀疑是不是打包的问题,就新弄了一个工程测试,发现特效没有
问题。
然后在项目里面把场景挂到build setting里面,使用unity的ScnenManager的方式,发现没问题。
然后怀疑是打包问题。
然后就实验换shader能否解决,发现无效。最后使用XCode的帧分析工具,发现有问题的场景在渲染
特效之前,深度缓冲区被clear掉了。
最后发现是因为场景有一个摄像机的深度和主摄像机一样,导致在metal模式下,渲染逻辑出错,大概
流程如下
1.渲染摄像机1中显示的不透明物体
2.渲染深度相同的摄像机2中显示的不透明物体,此时触发深度的clear操作,
3.渲染摄像机1中显示的透明物体,此时因为深度缓存区内没有深度信息,导致特效的深度检查失败
解决方案:
调整摄像机的深度。
此BUG,只在苹果的metal模式下才会触发。unity2017.1~2017.4全都有此BUG

猜你喜欢

转载自blog.csdn.net/t163361/article/details/80975930