问题:项目里有个特殊镜头近距离的技能展示,同一个模型正常场景里是好的, 播放这个特效时用了一个单独的相机的,
真机上出现了穿模的问题, 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编辑器上不穿模,真机Android上会穿模问题定位和解决
于 2023-03-29 17:11:58 首次发布