return love.graphics.newShader[[ #pragma language glsl3 uniform float highBorder; uniform float lowBorder; #define p(x) ((x) * 255.0 > highBorder) #define t(x) ((x) * 255.0 > lowBorder) vec4 effect( vec4 color, Image tex, vec2 texture_coords, vec2 screen_coords ) { vec2 s = vec2( 1.0, 1.0 ) / vec2( textureSize(tex, 0) ); float c = Texel( tex, texture_coords ).r; vec4 g = vec4( Texel( tex, texture_coords + s * vec2(1.0, 0.0)).r, Texel( tex, texture_coords + s * vec2(0.0, 1.0)).r, Texel( tex, texture_coords + s * vec2(-1.0, 0.0)).r, Texel( tex, texture_coords + s * vec2(0.0, -1.0)).r ); bvec4 place = bvec4( p(g.r), p(g.g), p(g.b), p(g.a) ); bvec4 traverse = bvec4( t(g.r), t(g.g), t(g.b), t(g.a) ); float a; if ( p(c) ){ if( all( place ) ) { a = 1.0; } else { a = 2.0; } } else if( t(c) ){ if( all( traverse ) ) { a = 0.5; } else { a = 0.75; } } else{ a = 0.0; } return vec4( color.rgb, a * color.a ); } ]]