(四)unity shader在实际项目中出现的问题————安卓机型角色眼镜闪烁的问题(Z-Fighting)

最近发布跑安卓平台游戏的时候,发现我们部分功能界面出现的角色模型,眼镜会一直闪烁,有时候全身都感觉在闪,经常调查,发现这种画面闪烁大多数情况下是z-fighting引起的。

 

解决方案:

1.由于我们项目的角色模型有眨眼这个功能,所以会导致,瞳孔的面片和角色模型是分离的面片,这两个面片贴的过劲导致的,所以解决方案之一是让模型产生这个现象的两个面尽量离开一些距离,究竟多少距离只有通过实验才知道。这种方法会对美术产生影响,所以这种方法是下下策。

2. 在每个场景中,找到那个MainCamera,然后在Inspector上,找到MainCamera的属性,Clipping Planes,需要做的是尽量放大near的值,尽量减小far的值。

(四)unity shader在实际项目中出现的问题————安卓机型角色眼镜闪烁的问题(Z-Fighting)_第1张图片

改动Near值的幅度比Far值的幅度相对来说效果会更好。如Near从1到20可能修正了某个z-fighting,但是Far从1000改到500也还是没有用。这个在实践中可以注意。

我这里原来是Near值为0.01,Far是500,当我Near改为1的时候就不闪烁了,完美解决问题。一般我们相机的Near尽量大于1,Far小于500是最好的情况。

z-fighting原理:

z-fighting的出现是的不同面上的像素在z-buffer中的值相近,导致前台取像素的时候一会去这个面的,一会取那个面的。改变照相机的near、far属性会涉及到z-buffer中的值的精度。因为在各个平台上z-buffer位数不同,因此改变near和far能给z-buffer中的值的浮点数部分尽量留出空间,消除z-fighting。

本文参考的文章原文地址:https://www.cnblogs.com/czaoth/p/5830725.html

 

你可能感兴趣的:(unity,unity,Shader,游戏开发)