#if __VERSION__ < 130 #define TEXTURE2D texture2D #else #define TEXTURE2D texture #endif uniform float u_Time; uniform sampler2D u_Tex0; uniform sampler2D u_Tex1; uniform sampler2D u_Tex2; varying vec2 v_TexCoord; varying vec2 v_TexCoord2; uniform vec2 u_Resolution; uniform float u_float1; uniform float u_float2; uniform float u_float3; varying vec2 v_TexCoord3; varying vec2 v_TexCoord4; uniform float u_float4; float _OutlineAlpha = 1.0; float _OutlineGlow = 1.0; float outline_thickness = 0.05; vec4 _OutlineColor = vec4(1.0,1.0,0.0,0.0); void main() { vec4 _MainTex = TEXTURE2D(u_Tex0, v_TexCoord); vec2 destUv = vec2(0.01 * _MainTex.x, 0.01 * _MainTex.y); float outDistortAmnt = (TEXTURE2D(u_Tex1, v_TexCoord4).r - 0.5) * outline_thickness; destUv.x += outDistortAmnt; destUv.y += outDistortAmnt; float spriteLeft = TEXTURE2D(u_Tex0, v_TexCoord + vec2(destUv.x, 0)).a; float spriteRight = TEXTURE2D(u_Tex0, v_TexCoord - vec2(destUv.x, 0)).a; float spriteBottom = TEXTURE2D(u_Tex0, v_TexCoord + vec2(0, destUv.y)).a; float spriteTop = TEXTURE2D(u_Tex0, v_TexCoord - vec2(0, destUv.y)).a; float result = spriteLeft + spriteRight + spriteBottom + spriteTop; float spriteTopLeft = TEXTURE2D(u_Tex0, v_TexCoord + vec2(destUv.x, destUv.y)).a; float spriteTopRight = TEXTURE2D(u_Tex0, v_TexCoord + vec2(-destUv.x, destUv.y)).a; float spriteBotLeft = TEXTURE2D(u_Tex0, v_TexCoord + vec2(destUv.x, -destUv.y)).a; float spriteBotRight = TEXTURE2D(u_Tex0, v_TexCoord + vec2(-destUv.x, -destUv.y)).a; result = result + spriteTopLeft + spriteTopRight + spriteBotLeft + spriteBotRight; result = step(0.05, clamp(result,0.0,1.0)); vec4 tempOutColor = TEXTURE2D(u_Tex2, v_TexCoord4); //tempOutColor *= _OutlineColor; _OutlineColor = tempOutColor; result *= (1.0 - _MainTex.a) * _OutlineAlpha; vec4 outline = _OutlineColor; //outline.rgb *= _OutlineGlow; //outline.a = result; gl_FragColor = mix(_MainTex, outline, result); }