1、其实unity相机的属性中Clippping Planes near属性 和Far属性 ,使Near尽量的增加,就可以 减少面于面的闪烁抖动的稳定。其实这是openGL的经典问题,由于面之间的距离太近导致的渲染的顺序,才引起的闪烁。
![](https://img.haomeiwen.com/i4654621/6df70ce315dcb479.png)
可以修改对应shader的着色器解决
v2f vert (appdata v)
{
v2f o;
o.vertex = UnityObjectToClipPos(v.vertex);
o.uv = TRANSFORM_TEX(v.uv, _MainTex);
// 加这两行
float3 n = normalize(UNITY_MATRIX_V[2].xyz); // 当前摄像机方向向量
o.vertex.xyz = o.vertex.xyz + n * _Distance;
UNITY_TRANSFER_FOG(o,o.vertex);
return o;
}
_Distance 控制距离(0.0002), 原因是两个面片离的太近了 ,把其中一个面片用shader偏移一段距离就好了,就不会打架了。
网友评论