Advertisement
Guest User

Untitled

a guest
Jul 18th, 2017
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Shader "ElecField"
  2. {
  3.     Properties
  4.     {
  5.         _MainTex("MainTex (RGB)", 2D) = "white" {}
  6.         _Alpha("Alpha", range(0.0, 1.0)) = 1.0
  7.         _NoiseTex("Noise (RGBA)", 2D) = "white" {}
  8.         _Noise("Noise", FLOAT) = 0.2
  9.         _Speed("Speed", FLOAT) = 0.2
  10.         _FallOff("FallOff", FLOAT) = 2
  11.         _Lines("Lines", FLOAT) = 0.2
  12.         _Color("Tint Color", COLOR) = (0.5,0.5,0.5,0.5)
  13.         _Width("Width", FLOAT) = 0.2
  14.     }
  15.     SubShader
  16.     {
  17.         CGPROGRAM
  18.             #pragma surface surf Lambert
  19.            
  20.             sampler2D _MainTex;
  21.             float _Alpha;
  22.            
  23.             struct Input
  24.             {
  25.                 float2 uv_MainTex;
  26.             };
  27.            
  28.             void surf (Input IN, inout SurfaceOutput o)
  29.             {
  30.                 half4 c = tex2D (_MainTex, IN.uv_MainTex);
  31.                 o.Albedo = c.rgb;
  32.                 o.Alpha = _Alpha;
  33.             }
  34.         ENDCG
  35.  
  36.         Pass
  37.         {
  38.             Blend SrcAlpha OneMinusSrcAlpha
  39.             ZWrite Off
  40.             Cull Off
  41.        
  42.             CGPROGRAM
  43.                 #pragma vertex vert
  44.                 #pragma fragment frag
  45.                 #include "UnityCG.cginc"
  46.                
  47.                 float4 _NoiseTex_ST;
  48.                 sampler2D _NoiseTex;
  49.                 float _Speed;
  50.                 float _Alpha;
  51.                 half4 _Color;
  52.                 float _FallOff;
  53.                 float _Lines;
  54.                 float _Noise;
  55.                 float _Width;
  56.                
  57.                 struct data
  58.                 {
  59.                     float4 vertex : POSITION;
  60.                     float2 texcoord : TEXCOORD;
  61.                     float3 normal : NORMAL;
  62.                 };
  63.        
  64.                 struct v2f
  65.                 {
  66.                     float4 position : POSITION;
  67.                     float2 uv : TEXCOORD;
  68.                     float viewAngle : TEXCOORD1;
  69.                     float ypos : TEXCOORD2;
  70.                 };
  71.                
  72.                 v2f vert(data v)
  73.                 {
  74.                     v2f o;
  75.                     o.position = mul(UNITY_MATRIX_MVP, v.vertex + float4(v.normal, 0) * _Width);
  76.                     o.uv = TRANSFORM_TEX(v.texcoord, _NoiseTex);
  77.                     o.viewAngle = 1- abs(dot(v.normal, normalize(ObjSpaceViewDir(v.vertex))));
  78.                     o.ypos = o.position.y;
  79.                     return o;
  80.                 }
  81.        
  82.                 half4 frag(v2f i) : COLOR
  83.                 {
  84.                     float2 uvOffset1 = _Time.xy*_Noise;
  85.                     float2 uvOffset2 = -_Time.xx*_Noise;
  86.                     half4 noise1 = tex2D(_NoiseTex, i.uv + uvOffset1);
  87.                     half4 noise2 = tex2D(_NoiseTex, i.uv + uvOffset2);
  88.                     float noise = (dot(noise1, noise2) - 1) * _Noise;
  89.                     half4 col = sin((i.ypos*_Lines + _Time.x*_Speed + noise)*100);
  90.                     noise1 = tex2D(_NoiseTex, i.uv*6 + uvOffset1);
  91.                     noise2 = tex2D(_NoiseTex, i.uv*6 + uvOffset2);
  92.                     col.a *= saturate(1.3-(noise1.g+noise2.g)) * pow(i.viewAngle,_FallOff) * 15 * _Alpha;
  93.                     return col * _Color * 2;
  94.                 }
  95.        
  96.             ENDCG
  97.         }
  98.     }
  99. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement