Unity Custom Tree Billboard Shader无法正常工作

时间:2016-05-20 08:32:02

标签: unity3d shader unity5 fragment-shader vertex-shader

我的树木有自定义着色器' Unity中的广告牌。由于某种原因,着色器不受雾的影响,我收到以下错误: Both vertex and fragment programs must be present in CGPROGRAM. Excluding it from compilation.

有没有人知道可能是什么问题?这是着色器的代码:

Shader "Hidden/TerrainEngine/BillboardTree" {
Properties {
    _MainTex ("Base (RGB) Alpha (A)", 2D) = "white" {}
}

SubShader {
    Tags { "Queue" = "Transparent-100" "IgnoreProjector"="True" "RenderType"="TreeBillboard" }

    Pass {
        ColorMask rgb
        Blend SrcAlpha OneMinusSrcAlpha
        ZWrite Off Cull Off

        CGPROGRAM
        #pragma vertex vert
        #include "UnityCG.cginc"
        #include "TerrainEngine.cginc"
        #pragma fragment frag

        struct v2f {
            float4 pos : POSITION;
            float fog : FOGC;
            float4 color : COLOR0;
            float2 uv : TEXCOORD0;
        };

        v2f vert (appdata_tree_billboard v) {
            v2f o;
            TerrainBillboardTree(v.vertex, v.texcoord1.xy, v.texcoord.y);   
            o.pos = mul (UNITY_MATRIX_MVP, v.vertex);
            o.fog = o.pos.z;
            o.uv.x = v.texcoord.x;
            o.uv.y = v.texcoord.y > 0;
            o.color = v.color;
            return o;
        }

        sampler2D _MainTex;
        half4 frag(v2f input) : COLOR
        {
            half4 col = tex2D( _MainTex, input.uv);
            col.rgb *= input.color.rgb;
            clip(col.a);
            return col;
        }
        ENDCG           
    }
}



SubShader {
    Tags { "Queue" = "Transparent-100" "IgnoreProjector"="True" "RenderType"="TreeBillboard" }

    Pass {

        CGPROGRAM
        #pragma vertex vert
        #pragma exclude_renderers gles
        #include "UnityCG.cginc"
        #include "TerrainEngine.cginc"

        struct v2f {
            float4 pos : POSITION;
            float fog : FOGC;
            float4 color : COLOR0;
            float2 uv : TEXCOORD0;
        };

        v2f vert (appdata_tree_billboard v) {
            v2f o;
            TerrainBillboardTree(v.vertex, v.texcoord1.xy, v.texcoord.y);   
            o.pos = mul (UNITY_MATRIX_MVP, v.vertex);
            o.fog = o.pos.z;
            o.uv.x = v.texcoord.x;
            o.uv.y = v.texcoord.y > 0;
            o.color = v.color;
            return o;
        }
        ENDCG           

        ColorMask rgb
        Blend SrcAlpha OneMinusSrcAlpha
        ZWrite Off Cull Off

        AlphaTest Greater 0
        SetTexture [_MainTex] { combine texture * primary, texture }
    }
} 

Fallback Off
}

0 个答案:

没有答案