Skip to content

Instantly share code, notes, and snippets.

@petereichinger
Created July 7, 2016 10:37
Show Gist options
  • Select an option

  • Save petereichinger/60b8bd2cb3698bed3187d3879253cd35 to your computer and use it in GitHub Desktop.

Select an option

Save petereichinger/60b8bd2cb3698bed3187d3879253cd35 to your computer and use it in GitHub Desktop.

Revisions

  1. petereichinger created this gist Jul 7, 2016.
    77 changes: 77 additions & 0 deletions Sprites-Emission.shader
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,77 @@
    Shader "Sprites/Diffuse Emit"
    {
    Properties
    {
    [PerRendererData] _MainTex ("Sprite Texture", 2D) = "white" {}
    _EmissionTex ("Emission Texture", 2D) = "white"{}
    _Color ("Tint", Color) = (1,1,1,1)
    [MaterialToggle] PixelSnap ("Pixel snap", Float) = 0
    }

    SubShader
    {
    Tags
    {
    "Queue"="Transparent"
    "IgnoreProjector"="True"
    "RenderType"="Transparent"
    "PreviewType"="Plane"
    "CanUseSpriteAtlas"="True"
    }

    Cull Off
    Lighting Off
    ZWrite Off
    Blend One OneMinusSrcAlpha

    CGPROGRAM
    #pragma surface surf Lambert vertex:vert nofog keepalpha
    #pragma multi_compile _ PIXELSNAP_ON
    #pragma shader_feature ETC1_EXTERNAL_ALPHA

    sampler2D _MainTex;
    sampler2D _EmissionTex;
    fixed4 _Color;
    sampler2D _AlphaTex;


    struct Input
    {
    float2 uv_MainTex;
    fixed4 color;
    };

    void vert (inout appdata_full v, out Input o)
    {
    #if defined(PIXELSNAP_ON)
    v.vertex = UnityPixelSnap (v.vertex);
    #endif

    UNITY_INITIALIZE_OUTPUT(Input, o);
    o.color = v.color * _Color;
    }

    fixed4 SampleSpriteTexture (float2 uv)
    {
    fixed4 color = tex2D (_MainTex, uv);

    #if ETC1_EXTERNAL_ALPHA
    color.a = tex2D (_AlphaTex, uv).r;
    #endif //ETC1_EXTERNAL_ALPHA

    return color;
    }

    void surf (Input IN, inout SurfaceOutput o)
    {
    fixed4 c = SampleSpriteTexture (IN.uv_MainTex) * IN.color;
    fixed4 e = tex2D(_EmissionTex,IN.uv_MainTex) * IN.color;
    o.Albedo = c.rgb * c.a;
    o.Alpha = c.a;
    o.Emission = e;
    }
    ENDCG
    }

    Fallback "Transparent/VertexLit"
    }