正如标题所示,当我使用标准透明着色器时,我的模型会重叠。
我需要一个与排序层兼容的着色器,因为我的游戏是 2D 和 3D 的混合体,这就是我使用这个的原因
有什么办法可以解决这个问题吗?
这是因为透明物体禁用了 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