i wondering to enable the depth writing at same time when it's rendering
so i added the "Depth" pass into Spine-Skeleton.shader
it works when the mesh render always working with a single material
BUT it doesn't work right when the mesh render working with multi-materials
material rendering orders were randomly changing, and i don't know why,it's confusing me.
Shader "Spine/Skeleton" {
   Properties {
      _Cutoff ("Alpha cutoff", Range(0,1)) = 0.01
      _Color ("Color", Color) = (1.000000,1.000000,1.000000,1.000000)
      _Cutoff ("Shadow alpha cutoff", Range(0,1)) = 0.1
      _GrayLerp ("GrayLerp",Range(0,1)) = 1
      [NoScaleOffset] _MainTex ("Main Texture", 2D) = "black" {}
      [Toggle(_STRAIGHT_ALPHA_INPUT)] _StraightAlphaInput("Straight Alpha Texture", Int) = 0
      [HideInInspector] _StencilRef("Stencil Reference", Float) = 1.0
      [HideInInspector][Enum(UnityEngine.Rendering.CompareFunction)] _StencilComp("Stencil Comparison", Float) = 8 // Set to Always as default
  // Outline properties are drawn via custom editor.
  [HideInInspector] _OutlineWidth("Outline Width", Range(0,8)) = 3.0
  [HideInInspector] _OutlineColor("Outline Color", Color) = (1,1,0,1)
  [HideInInspector] _OutlineReferenceTexWidth("Reference Texture Width", Int) = 1024
  [HideInInspector] _ThresholdEnd("Outline Threshold", Range(0,1)) = 0.25
  [HideInInspector] _OutlineSmoothness("Outline Smoothness", Range(0,1)) = 1.0
  [HideInInspector][MaterialToggle(_USE8NEIGHBOURHOOD_ON)] _Use8Neighbourhood("Sample 8 Neighbours", Float) = 1
  [HideInInspector] _OutlineMipLevel("Outline Mip Level", Range(0,3)) = 0
   }
   SubShader {
      Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" "PreviewType"="Plane" }
  Fog { Mode Off }
  Cull Off
  ZWrite Off
  Lighting Off
  
  
  Blend One OneMinusSrcAlpha
  
  Stencil {
     Ref[_StencilRef]
     Comp[_StencilComp]
     Pass Keep
  }
  Pass {
     Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" "PreviewType"="Plane" }
     Name "Normal"
     ColorMask RGBA
     CGPROGRAM
     #pragma shader_feature _ _STRAIGHT_ALPHA_INPUT
     #pragma vertex vert
     #pragma fragment frag
     #include "UnityCG.cginc"
     sampler2D _MainTex;
     fixed _Cutoff;
     float _GrayLerp;
     float4 _Color;
        
     struct VertexInput {
        float4 vertex : POSITION;
        float2 uv : TEXCOORD0;
        float4 vertexColor : COLOR;
     };
     struct VertexOutput {
        float4 pos : SV_POSITION;
        float2 uv : TEXCOORD0;
        float4 vertexColor : COLOR;
     };
     VertexOutput vert (VertexInput v) {
        VertexOutput o;
        o.pos = UnityObjectToClipPos(v.vertex);
        o.uv = v.uv;
        o.vertexColor = v.vertexColor;
        return o;
     }
     float4 frag (VertexOutput i) : SV_Target {
        float4 texColor = tex2D(_MainTex, i.uv);
        #if defined(_STRAIGHT_ALPHA_INPUT)
        texColor.rgb *= texColor.a;
        #endif
        float4 allColor = texColor * i.vertexColor * _Color;
        fixed gray = 0.30 * allColor.r + 0.59 * allColor.g + 0.11 * allColor.b;
        fixed3 finalColor = lerp(gray, allColor, _GrayLerp);
        return fixed4(finalColor.r, finalColor.g, finalColor.b,allColor.a);
     }
     ENDCG
  }
  
  Pass {
     Tags { "LightMode"="Vertex" "Queue"="Transparent" "IgnoreProjector"="true" "RenderType"="Transparent" }
     
     Name "Depth"
     ColorMask 0
     ZWrite On
     
     CGPROGRAM
     #pragma target 2.0
     #pragma shader_feature _ _STRAIGHT_ALPHA_INPUT
     #pragma vertex vert
     #pragma fragment frag
     #define _ALPHA_CLIP
     #include "UnityCG.cginc"
     sampler2D _MainTex;
     fixed _Cutoff;
     
     struct VertexInput {
        float4 vertex : POSITION;
        float2 uv : TEXCOORD0;
        float4 vertexColor : COLOR;
     };
     struct VertexOutput {
        float4 pos : SV_POSITION;
        float2 uv : TEXCOORD0;
        float4 vertexColor : COLOR;
     };
     VertexOutput vert (VertexInput v) {
        VertexOutput o;
        o.pos = UnityObjectToClipPos(v.vertex);
        o.uv = v.uv;
        o.vertexColor = v.vertexColor;
        return o;
     }
     float4 frag (VertexOutput i) : SV_Target {
        float4 texColor = tex2D(_MainTex, i.uv);
        #if defined(_STRAIGHT_ALPHA_INPUT)
        texColor.rgb *= texColor.a;
        #endif
        texColor = texColor * i.vertexColor;
        clip(texColor.a - _Cutoff);
        clip(-1.0);
        return texColor;
     }
     ENDCG
  }
  Pass {
     Name "Caster"
     Tags { "LightMode"="ShadowCaster" }
     Offset 1, 1
     ZWrite On
     ZTest LEqual
     Fog { Mode Off }
     Cull Off
     Lighting Off
     CGPROGRAM
     #pragma vertex vert
     #pragma fragment frag
     #pragma multi_compile_shadowcaster
     #pragma fragmentoption ARB_precision_hint_fastest
     #include "UnityCG.cginc"
     sampler2D _MainTex;
     fixed _Cutoff;
     struct VertexOutput {
        V2F_SHADOW_CASTER;
        float4 uvAndAlpha : TEXCOORD1;
     };
     VertexOutput vert (appdata_base v, float4 vertexColor : COLOR) {
        VertexOutput o;
        o.uvAndAlpha = v.texcoord;
        o.uvAndAlpha.a = vertexColor.a;
        TRANSFER_SHADOW_CASTER(o)
        return o;
     }
     float4 frag (VertexOutput i) : SV_Target {
        fixed4 texcol = tex2D(_MainTex, i.uvAndAlpha.xy);
        clip(texcol.a * i.uvAndAlpha.a - _Cutoff);
        SHADOW_CASTER_FRAGMENT(i)
     }
     ENDCG
  }
   }
   CustomEditor "SpineShaderWithOutlineGUI"
}
could you please tell me how to solve it,thanks!