unity编辑器上不穿模,真机Android上会穿模问题定位和解决

问题:项目里有个特殊镜头近距离的技能展示,同一个模型正常场景里是好的, 播放这个特效时用了一个单独的相机的,
真机上出现了穿模的问题, Unity上却没有:


原因:深度测试出现问题,查了一下资料应该是真机上深度图精度不够
最后解决方案很简单:调那个相机的 Clipping Planes,减少距离,特别是把Near调大一些,从0.01调成了0.1   (Far也从100调成了20)


正常的绘制效果和画手时的深度测试效果(RenderDoc抓取的,绿色测试通过 红色测试不通过(不画)):


真机上出问题的情况:



几个方案,目前用方案2就好了:
1. 调整模型贴合距离,这个比较麻烦
2. 调整一下 相机的Clipping Planes,  主要是调Near, 之前是0.01 调成0.1, 就是减少相机剪切距离,变相提高精度,同时Near不能设太小容易造成精度浪费。
3.自定义深度图等?不确定

大致原理:
不透明物体的绘制 是根据深度测试来绘制的, 一般近的先画,远的后画,深度测试不过的可以不画,这样可以减少overdraw。  但深度缓存存储是非线性的, 设置不当可能某个距离的精度不够造成深度测试出现错乱 出现穿模或者闪烁。

Near值设太小,会造成不少精度浪费, 具体为啥 可以看看下面参考资料自行理解吧  

 
参考资料:
unity 在game视图模型穿插问题_unity图集的穿插_lupeng0330的博客-CSDN博客

 深度缓冲格式、深度冲突及平台差异 - 知乎

  【Unity】深度图(Depth Texture)的简单介绍 - 知乎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值