2020-08-28unity3d 重叠面 图层抖动的解决方案,z-fighting.

1、其实unity相机的属性中Clippping Planes near属性 和Far属性 ,使Near尽量的增加,就可以 减少面于面的闪烁抖动的稳定。其实这是openGL的经典问题,由于面之间的距离太近导致的渲染的顺序,才引起的闪烁。

2、
2020-08-28unity3d 重叠面 图层抖动的解决方案,z-fighting._第1张图片
image.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偏移一段距离就好了,就不会打架了。

你可能感兴趣的:(2020-08-28unity3d 重叠面 图层抖动的解决方案,z-fighting.)