Advertisement
Guest User

Untitled

a guest
Aug 18th, 2018
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
  2.  
  3. Shader "Photoshop/Overlay"
  4. {
  5.     Properties
  6.     {
  7.         [PerRendererData] _MainTex("Sprite Texture", 2D) = "white" {}
  8.         _OverlayTex("Overlay Texture", 2D) = "white" {}
  9.         _Color("Tint", Color) = (1,1,1,1)
  10.         [MaterialToggle] PixelSnap("Pixel snap", Float) = 0
  11.     }
  12.  
  13.         SubShader
  14.         {
  15.             Tags
  16.             {
  17.                 "Queue" = "Transparent"
  18.                 "IgnoreProjector" = "True"
  19.                 "RenderType" = "Transparent"
  20.                 "PreviewType" = "Plane"
  21.                 "CanUseSpriteAtlas" = "True"
  22.             }
  23.  
  24.             Cull Off
  25.             Lighting Off
  26.             ZWrite Off
  27.             Blend DstColor Zero
  28.  
  29.             Pass
  30.             {
  31.                 CGPROGRAM
  32.                 #pragma vertex vert
  33.                 #pragma fragment frag
  34.                 #pragma multi_compile _ PIXELSNAP_ON
  35.                 #include "UnityCG.cginc"
  36.  
  37.                 struct appdata_t
  38.                 {
  39.                     float4 vertex   : POSITION;
  40.                     float4 color    : COLOR;
  41.                     float2 texcoord : TEXCOORD0;
  42.                 };
  43.  
  44.                 struct v2f
  45.                 {
  46.                     float4 vertex   : SV_POSITION;
  47.                     fixed4 color : COLOR;
  48.                     float2 texcoord  : TEXCOORD0;
  49.                 };
  50.  
  51.                 fixed4 _Color;
  52.  
  53.                 v2f vert(appdata_t IN)
  54.                 {
  55.                     v2f OUT;
  56.                     OUT.vertex = UnityObjectToClipPos(IN.vertex);
  57.                     OUT.texcoord = IN.texcoord;
  58.                     OUT.color = IN.color * _Color;
  59.                     #ifdef PIXELSNAP_ON
  60.                             OUT.vertex = UnityPixelSnap(OUT.vertex);
  61.                     #endif
  62.  
  63.                     return OUT;
  64.                 }
  65.  
  66.                 sampler2D _MainTex;
  67.                 sampler2D _OverlayTex;
  68.                 sampler2D _AlphaTex;
  69.                 float _AlphaSplitEnabled;
  70.  
  71.                 fixed4 SampleSpriteTexture(float2 uv)
  72.                 {
  73.                     fixed4 color = tex2D(_MainTex, uv);
  74.  
  75.                     #if UNITY_TEXTURE_ALPHASPLIT_ALLOWED
  76.                             if (_AlphaSplitEnabled)
  77.                                 color.a = tex2D(_AlphaTex, uv).r;
  78.                     #endif //UNITY_TEXTURE_ALPHASPLIT_ALLOWED
  79.  
  80.                     return color;
  81.                 }
  82.  
  83.                 float overlay_value(float b, float o) {
  84.                     if (b < 0.5)
  85.                         return 2.0 * b * o;
  86.                     else
  87.                         return 1.0 - 2.0 * (1.0 - b) * (1.0 - o);
  88.                 }
  89.  
  90.                 fixed4 frag(v2f IN) : SV_Target
  91.                 {
  92.                     fixed4 c = SampleSpriteTexture(IN.texcoord) * IN.color;
  93.                     c.rgb *= c.a;
  94.                     float4 base_color = c;
  95.                     float4 overlay_color = tex2D(_OverlayTex, IN.texcoord);
  96.                     float4 result = c;
  97.                     result.r = overlay_value(base_color.r, overlay_color.r);
  98.                     result.g = overlay_value(base_color.g, overlay_color.g);
  99.                     result.b = overlay_value(base_color.b, overlay_color.b);
  100.                     return result;
  101.                 }
  102.                 ENDCG
  103.             }
  104.         }
  105. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement