Need a unique gift idea?
A Pastebin account makes a great Christmas gift
SHARE
TWEET

Untitled

a guest Jul 3rd, 2018 12 Never
Upgrade to PRO!
ENDING IN00days00hours00mins00secs
 
  1. Shader "Nova/VerticalFogAnimated"
  2. {
  3.     Properties
  4.     {
  5.         _Color("Main Color", Color) = (1, 1, 1, .5)
  6.         _IntersectionThresholdMax("Intersection Threshold Max", float) = 1
  7.         _AlphaMask("Alpha Mask", 2D) = "white" {}
  8.         // variable_name("name in inspector", variable_type) = initial_value
  9.         _HorizontalSpeed("Horizontal Speed", Float) = 1
  10.         _VerticalSpeed("Vertical Speed", Float) = 0
  11.     }
  12.     SubShader
  13.     {
  14.         Tags { "Queue" = "Transparent" "RenderType"="Transparent"  }
  15.  
  16.         Pass
  17.         {
  18.             Blend SrcAlpha OneMinusSrcAlpha
  19.             ZWrite Off
  20.             CGPROGRAM
  21.             #pragma vertex vert
  22.             #pragma fragment frag
  23.             #pragma multi_compile_fog
  24.             #include "UnityCG.cginc"
  25.  
  26.             struct appdata
  27.             {
  28.                 float4 vertex : POSITION;
  29.                 half4 uv : TEXCOORD0;
  30.             };
  31.  
  32.             struct v2f
  33.             {
  34.                 half4 uv : TEXCOORD0;
  35.                 float4 scrPos : TEXCOORD1;
  36.                 UNITY_FOG_COORDS(1)
  37.                 float4 vertex : SV_POSITION;
  38.             };
  39.  
  40.             sampler2D _CameraDepthTexture, _AlphaMask;
  41.             float4 _Color;
  42.             float _IntersectionThresholdMax;
  43.  
  44.             // here we declare variables inside CG program
  45.             half _HorizontalSpeed, _VerticalSpeed;
  46.  
  47.             v2f vert(appdata v)
  48.             {
  49.                 v2f o;
  50.                 o.vertex = UnityObjectToClipPos(v.vertex);
  51.                 o.scrPos = ComputeScreenPos(o.vertex);
  52.                 o.uv = v.uv;
  53.                 UNITY_TRANSFER_FOG(o,o.vertex);
  54.                 return o;
  55.             }
  56.  
  57.  
  58.             fixed GetAlphaMult(half4 uv0, sampler2D alphamask)
  59.             {
  60.                 fixed mainMask = 1 - tex2D(alphamask, uv0.xy).g;
  61.  
  62.                 float time = _Time.x;
  63.                 uv0.x += frac(time * _HorizontalSpeed);
  64.                 uv0.y += frac(time * _VerticalSpeed);
  65.  
  66.                 fixed animationMask = 1 - tex2D(alphamask, uv0.xy).r;
  67.  
  68.                 return mainMask * animationMask;
  69.             }
  70.  
  71.  
  72.             half4 frag(v2f i) : SV_TARGET
  73.             {
  74.                 float depth = LinearEyeDepth (tex2Dproj(_CameraDepthTexture, UNITY_PROJ_COORD(i.scrPos)));
  75.                 float diff = saturate(_IntersectionThresholdMax * (depth - i.scrPos.w));
  76.  
  77.                 fixed4 col = lerp(fixed4(_Color.rgb, 0.0), _Color, diff * diff * diff * (diff * (6 * diff - 15) + 10));
  78.                 col.a *= GetAlphaMult(i.uv, _AlphaMask);
  79.  
  80.                 UNITY_APPLY_FOG(i.fogCoord, col);
  81.                 return col;
  82.             }
  83.  
  84.             ENDCG
  85.         }
  86.     }
  87. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top