mirror of
https://github.com/tanema/light_world.lua.git
synced 2024-12-24 20:24:19 +00:00
43 lines
983 B
GLSL
43 lines
983 B
GLSL
/*
|
|
Edge shader
|
|
Author: Themaister
|
|
License: Public domain.
|
|
|
|
modified by slime73 for use with love2d and mari0
|
|
*/
|
|
|
|
|
|
extern vec2 textureSize;
|
|
|
|
vec3 grayscale(vec3 color)
|
|
{
|
|
return vec3(dot(color, vec3(0.3, 0.59, 0.11)));
|
|
}
|
|
|
|
vec4 effect(vec4 vcolor, Image texture, vec2 tex, vec2 pixel_coords)
|
|
{
|
|
vec4 texcolor = Texel(texture, tex);
|
|
|
|
float x = 0.5 / textureSize.x;
|
|
float y = 0.5 / textureSize.y;
|
|
vec2 dg1 = vec2( x, y);
|
|
vec2 dg2 = vec2(-x, y);
|
|
|
|
vec3 c00 = Texel(texture, tex - dg1).xyz;
|
|
vec3 c02 = Texel(texture, tex + dg2).xyz;
|
|
vec3 c11 = texcolor.xyz;
|
|
vec3 c20 = Texel(texture, tex - dg2).xyz;
|
|
vec3 c22 = Texel(texture, tex + dg1).xyz;
|
|
|
|
vec2 texsize = textureSize;
|
|
|
|
vec3 first = mix(c00, c20, fract(tex.x * texsize.x + 0.5));
|
|
vec3 second = mix(c02, c22, fract(tex.x * texsize.x + 0.5));
|
|
|
|
vec3 res = mix(first, second, fract(tex.y * texsize.y + 0.5));
|
|
vec4 final = vec4(5.0 * grayscale(abs(res - c11)), 1.0);
|
|
return clamp(final, 0.0, 1.0);
|
|
}
|
|
|
|
|