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
}
}
}