Weezle

Untitled

Oct 14th, 2019
881
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Shader "Unlit/InnerSpriteOutline HLSL"
  2. {
  3.     Properties
  4.     {
  5.         _MainTex("Diffuse", 2D) = "white" {}
  6.         _OutlineColor("Outline Color", Color) = (1,1,1,1)
  7.     }
  8.  
  9.     HLSLINCLUDE
  10.     #include "Packages/com.unity.render-pipelines.lightweight/ShaderLibrary/Core.hlsl"
  11.     ENDHLSL
  12.  
  13.     SubShader
  14.     {
  15.         Tags {"Queue" = "Transparent" "RenderType" = "Transparent" "RenderPipeline" = "LightweightPipeline" }
  16.  
  17.         Blend SrcAlpha OneMinusSrcAlpha
  18.         Cull Off
  19.         ZWrite Off
  20.         Pass
  21.         {
  22.            CGPROGRAM
  23.            #pragma vertex vert
  24.            #pragma fragment frag
  25.  
  26.            #include "UnityCG.cginc"
  27.  
  28.            struct appdata
  29.            {
  30.                float4 vertex : POSITION;
  31.                float2 uv : TEXCOORD0;
  32.            };
  33.  
  34.            struct v2f
  35.            {
  36.                float2 uv : TEXCOORD0;
  37.                float4 vertex : SV_POSITION;
  38.            };
  39.  
  40.            sampler2D _MainTex;
  41.            float4 _MainTex_ST;
  42.            float4 _MainTex_TexelSize;
  43.  
  44.            fixed4 _OutlineColor;
  45.  
  46.            v2f vert(appdata v)
  47.            {
  48.                v2f o;
  49.                o.vertex = UnityObjectToClipPos(v.vertex);
  50.                o.uv = TRANSFORM_TEX(v.uv, _MainTex);
  51.                return o;
  52.            }
  53.  
  54.            fixed4 frag(v2f i) : SV_Target
  55.            {
  56.                fixed4 col = tex2D(_MainTex, i.uv);
  57.  
  58.                fixed leftPixel = tex2D(_MainTex, i.uv + float2(-_MainTex_TexelSize.x, 0)).a;
  59.                fixed upPixel = tex2D(_MainTex, i.uv + float2(0, _MainTex_TexelSize.y)).a;
  60.                fixed rightPixel = tex2D(_MainTex, i.uv + float2(_MainTex_TexelSize.x, 0)).a;
  61.                fixed bottomPixel = tex2D(_MainTex, i.uv + float2(0, -_MainTex_TexelSize.y)).a;
  62.  
  63.                fixed outline = (1 - leftPixel * upPixel * rightPixel * bottomPixel) * col.a;
  64.  
  65.                return lerp(col, _OutlineColor, outline);
  66.            }
  67.            ENDCG
  68.        }
  69.     }
  70.     Fallback "Hidden/Sprite-Fallback"
  71. }
RAW Paste Data