ld50/src/hilight.shader

21 lines
748 B
GLSL

shader_type canvas_item;
uniform float width: hint_range(0.0, 50.0);
uniform vec4 color: hint_color;
void fragment() {
vec2 size = TEXTURE_PIXEL_SIZE * width;
float outline = texture(TEXTURE, UV + vec2(-size.x, 0)).a;
outline += texture(TEXTURE, UV + vec2(0, size.y)).a;
outline += texture(TEXTURE, UV + vec2(size.x, 0)).a;
outline += texture(TEXTURE, UV + vec2(0, -size.y)).a;
outline += texture(TEXTURE, UV + vec2(-size.x, size.y)).a;
outline += texture(TEXTURE, UV + vec2(size.x, size.y)).a;
outline += texture(TEXTURE, UV + vec2(-size.x, -size.y)).a;
outline += texture(TEXTURE, UV + vec2(size.x, -size.y)).a;
outline = min(outline, 1.0);
vec4 ncolor = texture(TEXTURE, UV);
COLOR = mix(ncolor, color, outline - ncolor.a);
}