shader

Shader "Custom/logo" {
	Properties {
		_MainTex ("Texture", 2D) = "white" { }
	}
	SubShader
	{
		Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" }
		Tags { "LightMode" = "Vertex" }
		Cull Off
		Lighting On
		Material { Emission [_EmisColor] }
		ColorMaterial AmbientAndDiffuse
		ZWrite Off
		ColorMask RGB
		AlphaTest Greater .001
		
		// This 1 line of code make texture transparent 
		Blend SrcAlpha OneMinusSrcAlpha
		
		pass
		{
			CGPROGRAM
			#pragma vertex vert
			#pragma fragment frag
			
			#include "UnityCG.cginc"
			
			
			sampler2D _MainTex;
			float4 _MainTex_ST;
			
			
			struct v2f {
			    float4  pos : SV_POSITION;
			    float2  uv : TEXCOORD0;
			};
			
			
			
			v2f vert (appdata_base v)
			{
			    v2f o;
			   	o.pos = mul(UNITY_MATRIX_MVP,v.vertex);
				o.uv =	TRANSFORM_TEX(v.texcoord,_MainTex);
			    return o;
			}
			
			float inFlash(float angle,float2 uv,float xLength,int interval,int beginTime, float offX, float loopTime )
			{
				float brightness =0;
				float angleInRad = 0.0174444 * angle;
				float currentTime = _Time.y;
			
				int currentTimeInt = _Time.y/interval;
				currentTimeInt *=interval;
				float currentTimeRemainder = currentTime -currentTimeInt;
				if(currentTimeRemainder >beginTime)
				{
					float xLeftBound; 
					float xRightBound;
			
					float xProjL;
					float xPointLeftBound; 
					float xPointRightBound;
					
					float x0 = currentTimeRemainder-beginTime; 
					x0 /= loopTime;
			
					xRightBound = x0;
					xLeftBound = x0 - xLength;
					
					xProjL= (uv.y)/tan(angleInRad);

					
					xPointLeftBound = xLeftBound - xProjL;
					xPointRightBound = xRightBound - xProjL;
					
					xPointLeftBound += offX;
					xPointRightBound += offX;
					if(uv.x > xPointLeftBound && uv.x < xPointRightBound)
					{
						float midness = (xPointLeftBound + xPointRightBound)/2;
						float rate= (xLength -2*abs(uv.x - midness))/ (xLength);
						brightness = rate;
					}
				}
				brightness= max(brightness,0);
				float4 col = float4(1,1,1,1) *brightness;
				return brightness;
			}
			float4 frag (v2f i) : COLOR
			{
				bool inRegion;
				inRegion = false;
				
				float tmpBrightness;
//				tmpBrightness =inFlash(75,i.uv,0.05f,5f,2f,0,0.7f);
//				if(tmpBrightness ==0)
//					tmpBrightness =inFlash(75,i.uv,0.25f,5f,2f,0.15,0.7f);
				
				tmpBrightness =inFlash(75,i.uv,0.25f,5f,2f,0.15,0.7f);
				
				float4 texCol = tex2D(_MainTex,i.uv);
			    float4 outp;
			
			    if(texCol.w >0.5)
			    {
				    	outp  =texCol+float4(1,1,1,1)*tmpBrightness;
			    }
			    else
			    	outp =float4(0,0,0,0);
			    	
			    //int uu = _Time.y;
			    //outp = float4(uu%5 * 0.1,0,0,1);
			    return outp;
			}
			ENDCG
		}
	}
}
posted @ 2018-03-23 22:36  U_探索  阅读(280)  评论(0编辑  收藏  举报