Simple Highlight Effect
Uses an SDF provided by a LightOccluder2D object to create a highlight effect
Shader code
shader_type canvas_item;
render_mode world_vertex_coords;
uniform float outline_width;
uniform vec2 lower_limit;
uniform vec2 upper_limit;
uniform vec4 color : source_color;
void vertex() {
vec2 disp;
// resizes the
switch (VERTEX_ID)
{
case 0:
disp = vec2(lower_limit.x, lower_limit.y);
break;
case 1:
disp = vec2(lower_limit.x, upper_limit.y);
break;
case 2:
disp = vec2(upper_limit.x, upper_limit.y);
break;
case 3:
disp = vec2(upper_limit.x, lower_limit.y);
break;
}
VERTEX = disp;
}
void fragment() {
float alpha;
// use sdf to calculate the alpha of the highlight
alpha = 1.0 - texture_sdf(screen_uv_to_sdf(SCREEN_UV)) / float(outline_width);
COLOR = color;
COLOR.a = alpha;
}
My god, I can’t get this to work. I’ve tried much and brushed up on shaders again by reading and watching videos the last few days. At best, I can get a fully colored rect over where my sprite is in the editor. It does not appear when run, And if it did, It still would not be an outline but rather a fully colored rectangle over the sprite.
This is obviously user error ( me ) , But I thought I’d comment for some help or at least to warn others it MAY be tricky.
Regardless, Thanks for making the shader
Godot 4.3 Stable
can not work, how to set the parameters?