我有一个png图像,希望它可以作为透明遮罩使用,在场景中完全透明,但是位于其后面的3D对象不会被显示(类似于精灵遮罩,但需要与3D对象一起使用)。
因此,我将图像作为点状精灵(无滤波器)添加到我的3D场景中,并已经应用了着色器到精灵材质上,但是它并没有正常工作。看起来像是边界处的像素没有被"正确地"剪切。
我之所以使用这种方法,是因为Unity内置的"2D精灵遮罩"只影响使用Sprite Renderer的对象(如此处所述https://docs.unity3d.com/Manual/class-SpriteMask.html),但我想它影响3D对象。
因此,这是着色器:
Shader "Masked/Mask" {
SubShader {
Tags {"Queue" = "Geometry+10" }
ColorMask 0
ZWrite On
Pass {}
}
}
这是用作遮罩的精灵(png 图像): 遮罩精灵 这是我想要的结果与实际结果的比较: 比较结果 我不太擅长着色器,所以想知道是否有代码修改可以改善结果。我已经尝试使用不同格式的精灵图像(png、tif、压缩),但结果都相同。