Advertisement
Guest User

Untitled

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