当对象被轴反转时着色器不起作用

Shader doesn't work when object is inverted by axis

我有一个简单的着色器,可以模仿 "Filled" SpriteRenderer 的图像类型。它允许根据填充量截断部分精灵。 但是,如果对象被任何轴反转(无论是通过旋转、缩放还是 SpriteRenderer 上的 "Flip" 复选框反转),着色器都不起作用。 当 Object 反转时,根本不会绘制 Sprite。

着色器:

Shader "Custom/ProgressShaderUpToDown" {
Properties{
    _MainTex("Base (RGB)", 2D) = "white" {}
    _Progress("Progress (Float)", Float) = 0
    _Color("Tint", Color) = (1.0, 0.6, 0.6, 1.0)
}

SubShader{
    Tags{ "Queue" = "Transparent" }
    Pass{
    Blend SrcAlpha OneMinusSrcAlpha
    CGPROGRAM
    #pragma vertex vert_img
    #pragma fragment frag

    #include "UnityCG.cginc"

uniform sampler2D _MainTex;
uniform float _Progress;
uniform fixed4 _Color;

    float4 frag(v2f_img i) : COLOR
    {
        float4 result = tex2D(_MainTex, i.uv);

        if (i.uv.y > _Progress)
        {
            result.a = 0;
        }

        return result*_Color;
    }
        ENDCG
    }
}
}

我该如何解决这个问题?

看起来脸在翻转后变成 "back-facing" 并被剔除。尝试通过在 Blend SrcAlpha OneMinusSrcAlpha.

之后添加 Cull Off 来禁用剔除