Unity URP 物体遮挡显示轮廓Shader 自身判断为遮挡问题

内置管线转urp管线 对自定义shader修改后出现同shader物体互相判断为遮挡;试了rederFeature也是遮挡(按着官网的解释看着就不行)
模型分为 头发; 脸; 武器; 躯干;用的材质的shader都是同一个

img


上图 内置管线shader 男女之间,模型自身之间 不判断为遮挡

img


上图 urpshader 男女之间,模型自身之间 判断为遮挡

内置管线 shader
SubShader
{
     Tags { "RenderType" = "Opaque"  "Queue" = "Geometry" }
     Pass //被遮挡显示纯色
     {
           Blend SrcAlpha OneMinusSrcAlpha //混合
           ZTest GEqual  //深度更大时
           ZWrite off
           
           v2f vert(appdata v) 
           { 
                //变换到裁剪空间输出 
           }

           fixed4 frag(v2f i) : SV_Target
           {
               return _MaskColor; //直接显示纯色
           }
     }
     
     Pass //正常显示模型
     {
          Tags { "LightMode" = "ForwardBase" }
          //就是 贴图采样
     }
}
urp shader
SubShader
{
    Tags { "RenderPipeline" = "UniversalPipeline" "RenderType" = "Opaque" "Queue" = "Geometry"}
    Pass //被遮挡显示纯色
    {
         Tags{"LightMode" = "SRPDefaultUnlit" }  //不给lightMode 默认也是这个

         Blend SrcAlpha OneMinusSrcAlpha
         ZTest GEqual
         ZWrite off

         HLSLPROGRAM
         #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"

         v2f vert(appdata v)
         {
              //变换到裁剪空间输出
         }
         
         half4 frag(v2f i) : SV_Target
         {
             return _MaskColor;
         }
         ENDHLSL
    }
    Pass
    {
         Tags {"LightMode" = "UniversalForward"}
         HLSLPROGRAM
         #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
         #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl"  //计算光照

         //采样输出
         
         ENDHLSL
    }
}

试了各种renderType renderQueue pass的搭配 甚至是pass的顺序; renderFeature也尝试了各种 已经是乱来了 还是没解决问题 :D

如果把 urp 的renderType和queue都改成 transparent 两物体不重叠不会遮挡

img