Advertisement
Guest User

Untitled

a guest
Jul 18th, 2017
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Shader "ElecField"
  2.  
  3. {
  4.  
  5.     Properties
  6.  
  7.     {
  8.  
  9.         _MainTex("MainTex (RGB)", 2D) = "white" {}
  10.  
  11.         _Alpha("Alpha", range(0.0, 1.0)) = 1.0
  12.  
  13.         _NoiseTex("Noise (RGBA)", 2D) = "white" {}
  14.  
  15.         _Noise("Noise", FLOAT) = 0.2
  16.  
  17.         _Speed("Speed", FLOAT) = 0.2
  18.  
  19.         _FallOff("FallOff", FLOAT) = 2
  20.  
  21.         _Lines("Lines", FLOAT) = 0.2
  22.  
  23.         _Color("Tint Color", COLOR) = (0.5,0.5,0.5,0.5)
  24.  
  25.         _Width("Width", FLOAT) = 0.2
  26.  
  27.     }
  28.  
  29.     SubShader
  30.  
  31.     {
  32.  
  33.         CGPROGRAM
  34.  
  35.             #pragma surface surf Lambert
  36.  
  37.            
  38.  
  39.             sampler2D _MainTex;
  40.  
  41.             float _Alpha;
  42.  
  43.            
  44.  
  45.             struct Input
  46.  
  47.             {
  48.  
  49.                 float2 uv_MainTex;
  50.  
  51.             };
  52.  
  53.            
  54.  
  55.             void surf (Input IN, inout SurfaceOutput o)
  56.  
  57.             {
  58.  
  59.                 half4 c = tex2D (_MainTex, IN.uv_MainTex);
  60.  
  61.                 o.Albedo = c.rgb;
  62.  
  63.                 o.Alpha = _Alpha;
  64.  
  65.             }
  66.  
  67.         ENDCG
  68.  
  69.  
  70.  
  71.         Pass
  72.  
  73.         {
  74.  
  75.             Blend SrcAlpha OneMinusSrcAlpha
  76.  
  77.             ZWrite Off
  78.  
  79.             Cull Off
  80.  
  81.        
  82.  
  83.             CGPROGRAM
  84.  
  85.                 #pragma vertex vert
  86.  
  87.                 #pragma fragment frag
  88.  
  89.                 #include "UnityCG.cginc"
  90.  
  91.                
  92.  
  93.                 float4 _NoiseTex_ST;
  94.  
  95.                 sampler2D _NoiseTex;
  96.  
  97.                 float _Speed;
  98.  
  99.                 float _Alpha;
  100.  
  101.                 half4 _Color;
  102.  
  103.                 float _FallOff;
  104.  
  105.                 float _Lines;
  106.  
  107.                 float _Noise;
  108.  
  109.                 float _Width;
  110.  
  111.                
  112.  
  113.                 struct data
  114.  
  115.                 {
  116.  
  117.                     float4 vertex : POSITION;
  118.  
  119.                     float2 texcoord : TEXCOORD;
  120.  
  121.                     float3 normal : NORMAL;
  122.  
  123.                 };
  124.  
  125.        
  126.  
  127.                 struct v2f
  128.  
  129.                 {
  130.  
  131.                     float4 position : POSITION;
  132.  
  133.                     float2 uv : TEXCOORD;
  134.  
  135.                     float viewAngle : TEXCOORD1;
  136.  
  137.                     float ypos : TEXCOORD2;
  138.  
  139.                 };
  140.  
  141.                
  142.  
  143.                 v2f vert(data v)
  144.  
  145.                 {
  146.  
  147.                     v2f o;
  148.  
  149.                     o.position = mul(UNITY_MATRIX_MVP, v.vertex + float4(v.normal, 0) * _Width);
  150.  
  151.                     o.uv = TRANSFORM_TEX(v.texcoord, _NoiseTex);
  152.  
  153.                     o.viewAngle = 1- abs(dot(v.normal, normalize(ObjSpaceViewDir(v.vertex))));
  154.  
  155.                     o.ypos = o.position.y;
  156.  
  157.                     return o;
  158.  
  159.                 }
  160.  
  161.        
  162.  
  163.                 half4 frag(v2f i) : COLOR
  164.  
  165.                 {
  166.  
  167.                     float2 uvOffset1 = _Time.xy*_Noise;
  168.  
  169.                     float2 uvOffset2 = -_Time.xx*_Noise;
  170.  
  171.                     half4 noise1 = tex2D(_NoiseTex, i.uv + uvOffset1);
  172.  
  173.                     half4 noise2 = tex2D(_NoiseTex, i.uv + uvOffset2);
  174.  
  175.                     float noise = (dot(noise1, noise2) - 1) * _Noise;
  176.  
  177.                     half4 col = sin((i.ypos*_Lines + _Time.x*_Speed + noise)*100);
  178.  
  179.                     noise1 = tex2D(_NoiseTex, i.uv*6 + uvOffset1);
  180.  
  181.                     noise2 = tex2D(_NoiseTex, i.uv*6 + uvOffset2);
  182.  
  183.                     col.a *= saturate(1.3-(noise1.g+noise2.g)) * pow(i.viewAngle,_FallOff) * 15 * _Alpha;
  184.  
  185.                     return col * _Color * 2;
  186.  
  187.                 }
  188.  
  189.        
  190.  
  191.             ENDCG
  192.  
  193.         }
  194.  
  195.     }
  196.  
  197. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement