36 lines
1.0 KiB
Lua
36 lines
1.0 KiB
Lua
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 );
|
|
}
|
|
]] |