【问题标题】:Unity3D: Line renderer hidden by underneath object shaderUnity3D:隐藏在对象着色器下方的线渲染器
【发布时间】:2022-12-21 08:08:40
【问题描述】:

在附图中,有一个半径为 6.4 的地球物体和一个半径为 6.8 的国际空间站轨道。相机是正交的,近/远设置为 1/3000。在第一个图像中,轨道线渲染得很好,而在第二个图像中,轨道线被地球遮住了,尽管它在行星上方。对于这条线,我使用的是 Unity LineRenderer。对于地球,它是一个包含两种材质的球体网格: - 第一种材质使用表面着色器,称为“Custom/EarthGround” - 第二种材质使用垂直+片段着色器,称为“EPIC/Projector2” 第一张图像仅使用第一种着色器,第二个,隐藏线的地方,正在使用两者。

你认为我缺少什么,可能在第二个着色器中,导致地球隐藏线?

附上下面的子着色器属性摘录以及图像。

Shader #1,名为“Custom/EarthGround”(摘录):

          SubShader 
           {
             Tags
             {
                 "Queue"="Geometry"
                 "IgnoreProjector"="False"
                 "RenderType"="Opaque"
             }
             Cull Back
             ZWrite On
             ZTest LEqual
             ColorMask RGBA
             Fog{
             }

着色器 #2,名为“EPICProjector”(摘录):

 Subshader { 
         Tags {"Queue"="Geometry"}
                 Tags { "RenderType" = "Opaque" }
         Pass {
              Name "PROJECTOR"
             Blend SrcAlpha OneMinusSrcAlpha

仅限着色器 #1 - 行未隐藏:

着色器 #1 + #2 - 线隐藏

【问题讨论】:

    标签: unity3d


    【解决方案1】:

    终于修好了。我发现材质检查器中有一个 RenderQueue 字段会覆盖着色器中的内容。因此,将 RenderQueue 设置为“Geometry”确实可以解决问题!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-05
      • 2012-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多