【问题标题】:Models using Unity's Standard transparent shader are overlapping themselves使用 Unity 标准透明着色器的模型相互重叠
【发布时间】:2019-07-31 13:43:17
【问题描述】:

正如标题所说,当我使用标准透明着色器时,我的模型会相互重叠。
我需要一个与排序层兼容的着色器,因为我的游戏是 2D 和 3D 的混合体,这就是我使用这个的原因

这是一个例子,看看腿:
不透明:https://i.imgur.com/iaRX57X.png
透明:https://i.imgur.com/4fUtHVE.png

有什么办法可以解决这个问题?

(编辑:从上面看到的另一个例子:
不透明:https://i.imgur.com/Sw2itEw.png
透明:https://i.imgur.com/8O1Hv2y.png)

【问题讨论】:

  • 将不透明度设置为最大?我看不出您的图像有什么问题,模型本身并没有重叠,您可以按预期看穿它们。
  • 不透明度达到最大值,我无法看穿它们。问题是我们不应该看到的模型多边形有时会出现在其他人面前

标签: unity3d shader rendering


【解决方案1】:

这是因为对透明对象禁用了 Z 测试。解决此问题的一种方法是在主通道之前创建一个具有所谓“深度底漆通道”的自定义着色器。以下是它在子着色器中的外观示例:

Tags {"RenderType"="Transparent" "Queue"="Transparent" }
Blend SrcAlpha OneMinusSrcAlpha
ZWrite Off

Pass {
    ZWrite On
    ColorMask 0
}

CGPROGRAM
#pragma surface surf standard alpha:fade
// The rest is just your standard surface shader

请注意,当两个透明对象相交或在彼此前面时,这可能会导致一些奇怪的伪影。

如果您没有编写表面着色器的经验,可以查看此链接: https://docs.unity3d.com/Manual/SL-SurfaceShaderExamples.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-18
    • 2018-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    相关资源
    最近更新 更多