TxxxWsT 2021-10-21 14:42 采纳率: 0%
浏览 257
已结题

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

  • 写回答

1条回答 默认 最新

  • TxxxWsT 2021-10-21 15:03
    关注

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

    img

    评论

报告相同问题?

问题事件

  • 系统已结题 10月29日
  • 创建了问题 10月21日

悬赏问题

  • ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?
  • ¥15 ubuntu系统下挂载磁盘上执行./提示权限不够
  • ¥15 Arcgis相交分析无法绘制一个或多个图形
  • ¥15 关于#r语言#的问题:差异分析前数据准备,报错Error in data[, sampleName1] : subscript out of bounds请问怎么解决呀以下是全部代码:
  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)
  • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误
  • ¥30 3天&7天&&15天&销量如何统计同一行
  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型