Advertisement
josemorval

Shadow Curves shader

Feb 26th, 2017
251
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Shader "ShadowCurves"
  2. {
  3.     Properties
  4.     {
  5.         _MainTex ("Texture", 2D) = "white" {}
  6.     }
  7.     SubShader
  8.     {
  9.  
  10.         Pass
  11.         {
  12.             CGPROGRAM
  13.             #pragma vertex vert
  14.             #pragma fragment frag
  15.            
  16.             #include "UnityCG.cginc"
  17.  
  18.             struct appdata
  19.             {
  20.                 float4 vertex : POSITION;
  21.                 float2 uv : TEXCOORD0;
  22.             };
  23.  
  24.             struct v2f
  25.             {
  26.                 float2 uv : TEXCOORD0;
  27.                 float4 vertex : SV_POSITION;
  28.             };
  29.  
  30.             v2f vert (appdata v)
  31.             {
  32.                 v2f o;
  33.                 o.vertex = mul(UNITY_MATRIX_MVP, v.vertex);
  34.                 o.uv = v.uv;
  35.                 return o;
  36.             }
  37.            
  38.             sampler2D _MainTex;
  39.             float _factorScreen;
  40.  
  41.             float4 frag (v2f i) : SV_Target
  42.             {
  43.                 float2 uv = i.uv;
  44.                 uv -= float2(0.5,0.5);
  45.                 uv.x *= _factorScreen;
  46.  
  47.                 float dist,dist1,dist2,mask,l,final = 1.0;
  48.                 float s = 0.07;
  49.                 float amp,freq;
  50.                 uv.x-=_factorScreen;
  51.                 for(float f = -_factorScreen;f<_factorScreen;f+=s){
  52.                     uv.x+=s;
  53.                     freq = 5.0*exp(-20.0*(f*f));
  54.                     amp = 0.12*exp(-10.0*(f*f));
  55.                     dist = amp*pow(sin(freq*uv.y+2.0*_Time.y+100.0*sin(122434.0*f)),2.0)*exp(-5.0*uv.y*uv.y)-uv.x;
  56.                     mask = 1.0-smoothstep(0.0,0.005,dist);
  57.  
  58.                     dist1 = abs(dist);
  59.                     dist1 = smoothstep(0.003,0.005,dist1);
  60.  
  61.                     dist2 =abs(dist);
  62.                     dist2 = smoothstep(0.0,0.03,dist2);
  63.                     dist2 = lerp(0.7,1.0,dist2);
  64.                     dist2 *= mask;
  65.  
  66.                     l = lerp(dist1,dist2,mask);
  67.                     final=lerp(l,l*final,mask);
  68.                 }
  69.  
  70.  
  71.                 return float4(final,final,final,1.0);
  72.             }
  73.             ENDCG
  74.         }
  75.     }
  76. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement