Advertisement
tonynogo

Demo 15 - Sprite outline

Jul 6th, 2017
13,824
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Shader "Custom/Sprite Outline" {
  2.     Properties {
  3.         _MainTex ("Base (RGB)", 2D) = "white" {}
  4.         _Color ("Color", Color) = (1, 1, 1, 1)
  5.     }
  6.     SubShader {
  7.         Tags {"Queue"="Transparent" "RenderType"="Transparent"}
  8.         Cull Off
  9.         Blend One OneMinusSrcAlpha
  10.        
  11.         Pass {
  12.  
  13.             CGPROGRAM
  14.             #pragma vertex vert
  15.             #pragma fragment frag
  16.             #include "UnityCG.cginc"
  17.  
  18.             sampler2D _MainTex;
  19.  
  20.             struct v2f {
  21.                 float4 pos : SV_POSITION;
  22.                 half2 uv : TEXCOORD0;
  23.             };
  24.  
  25.             v2f vert(appdata_base v) {
  26.                 v2f o;
  27.                 o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
  28.                 o.uv = v.texcoord;
  29.                 return o;
  30.             }
  31.  
  32.             fixed4 _Color;
  33.             float4 _MainTex_TexelSize;
  34.  
  35.             fixed4 frag(v2f i) : COLOR
  36.             {
  37.                 half4 c = tex2D(_MainTex, i.uv);
  38.                 c.rgb *= c.a;
  39.                 half4 outlineC = _Color;
  40.                 outlineC.a *= ceil(c.a);
  41.                 outlineC.rgb *= outlineC.a;
  42.  
  43.                 fixed alpha_up = tex2D(_MainTex, i.uv + fixed2(0, _MainTex_TexelSize.y)).a;
  44.                 fixed alpha_down = tex2D(_MainTex, i.uv - fixed2(0, _MainTex_TexelSize.y)).a;
  45.                 fixed alpha_right = tex2D(_MainTex, i.uv + fixed2(_MainTex_TexelSize.x, 0)).a;
  46.                 fixed alpha_left = tex2D(_MainTex, i.uv - fixed2(_MainTex_TexelSize.x, 0)).a;
  47.  
  48.                 return lerp(outlineC, c, ceil(alpha_up * alpha_down * alpha_right * alpha_left));
  49.             }  
  50.  
  51.             ENDCG
  52.         }
  53.     }
  54.     FallBack "Diffuse"
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement