【问题标题】:Sprite disappear shader精灵消失着色器
【发布时间】:2017-03-27 04:51:01
【问题描述】:

我正在开发 Unity 2D 平台游戏。 我正在使用我找到here 的着色器,但是当我翻转我的精灵(比例 -1)时, 精灵消失了,我对着色器编码知之甚少, 而且我在谷歌上没有找到任何帮助,任何人都可以帮助修复着色器吗? 这是着色器:

Properties {
    [PerRendererData] _MainTex ("Main texture", 2D) = "white" {}
    _DissolveTex ("Dissolution texture", 2D) = "gray" {}
    _Threshold ("Threshold", Range(0., 1.01)) = 0.
}

SubShader {

    Tags { "Queue"="Transparent" }
    Blend SrcAlpha OneMinusSrcAlpha

    Pass {

        CGPROGRAM
        #pragma vertex vert
        #pragma fragment frag

        #include "UnityCG.cginc"

        struct v2f {
            float4 pos : SV_POSITION;
            float2 uv : TEXCOORD0;
        };

        sampler2D _MainTex;

        v2f vert(appdata_base v) {
            v2f o;
            o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
            o.uv = v.texcoord;
            return o;
        }

        sampler2D _DissolveTex;
        float _Threshold;

        fixed4 frag(v2f i) : SV_Target {
            float4 c = tex2D(_MainTex, i.uv);
            float val = tex2D(_DissolveTex, i.uv).r;

            c.a *= step(_Threshold, val);
            return c;
        }
        ENDCG
    }
}

【问题讨论】:

    标签: unity3d 2d shader sprite


    【解决方案1】:

    精灵被渲染为一个矩形,带有两个索引顺序的三角形:顺时针。

    您可以将 Shading Mode 更改为 Shaded Wireframe 进行检查。

    如果你翻转精灵(缩放 -1),精灵的两个三角形将变为逆时针方向。而且,逆时针三角形不会被 GPU 渲染。这就是为什么你的精灵消失了。另见what is a clockwise face in openGL

    如果你想看到你的精灵,即使它被翻转了,你可以

    1. 创建两个具有相同纹理的精灵:一个正常的和一个翻转的:

      MySprite
       |--Normal
       |--Flipped (scaled -1)
      

      然后,将 MySprite GameObject 改为 -1。

    2. 在着色器中关闭背面剔除。

      只需将Cull Off 添加到子着色器。另见this

      SubShader {
      
          Tags { "Queue"="Transparent" }
          Blend SrcAlpha OneMinusSrcAlpha
      
          Pass {
          Cull Off
          ...
      

    【讨论】:

    • 但是使用默认材质(sprite 默认)它的工作,我不能将着色器更改为“工作”相同吗?
    • 是的!,第二个选项(以及我正在寻找的)工作,谢谢!,投票!
    • 很高兴知道它有效。还记得接受答案。 :)
    猜你喜欢
    • 1970-01-01
    • 2012-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多