| Shader "Custom/DiagonalGlowEffect" | 
| { | 
|     //直接应用于图片上的流光,且有流光遮罩效果,参考材质DiagonalGlowMaterial | 
|     Properties | 
|     { | 
|         _GlowThickness ("流光粗细", Range(0.01, 0.5)) = 0.1 | 
|         _GlowSpacing ("流光间距", Range(0.1, 2)) = 0.5 | 
|         _MainTex ("Base (RGB)", 2D) = "white" {} | 
|         _GlowColor ("Glow Color", Color) = (1, 1, 1, 1) | 
|         _GlowSpeed ("Glow Speed", Range(0, 5)) = 1 | 
|         _GlowWidth ("Glow Width", Range(0, 1)) = 0.2 | 
|         _GlowDirection ("Glow Direction", Vector) = (1,1,0,0) | 
|     } | 
|   | 
|     SubShader | 
|     { | 
|         Tags { "Queue" = "Transparent" "RenderType" = "Transparent" "IgnoreProjector" = "True" } | 
|         LOD 100 | 
|         Blend SrcAlpha OneMinusSrcAlpha | 
|         ZWrite Off | 
|   | 
|         Pass | 
|         { | 
|             CGPROGRAM | 
|             #pragma vertex vert | 
|             #pragma fragment frag | 
|             #include "UnityCG.cginc" | 
|   | 
|             struct appdata | 
|             { | 
|                 float4 vertex : POSITION; | 
|                 float2 uv : TEXCOORD0; | 
|             }; | 
|   | 
|             struct v2f | 
|             { | 
|                 float2 uv : TEXCOORD0; | 
|                 float4 vertex : SV_POSITION; | 
|             }; | 
|   | 
|             sampler2D _MainTex; | 
|             float4 _GlowColor; | 
|             float _GlowSpeed; | 
|         float _GlowThickness; | 
|         float _GlowSpacing; | 
|             float _GlowWidth; | 
|             float4 _GlowDirection; | 
|   | 
|             v2f vert (appdata v) | 
|             { | 
|                 v2f o; | 
|                 o.vertex = UnityObjectToClipPos(v.vertex); | 
|                 o.uv = v.uv; | 
|                 return o; | 
|             } | 
|   | 
|             fixed4 frag (v2f i) : SV_Target | 
|             { | 
|                 fixed4 col = tex2D(_MainTex, i.uv); | 
|                 float2 dir = normalize(_GlowDirection.xy); | 
|                 float flow = dot(i.uv, dir); | 
|                 float glow = (sin(_Time.y * _GlowSpeed + flow * (10 / _GlowSpacing)) * 0.5 + 0.5) * _GlowThickness * 2; | 
|                 glow = smoothstep(1 - _GlowWidth, 1, glow); | 
|                 col.rgb += _GlowColor.rgb * glow * _GlowColor.a; | 
|                 return col; | 
|             } | 
|             ENDCG | 
|         } | 
|     } | 
| } |