Randoloot/resources/ui/skill_icon.gdshader
2026-10-15 21:46:44 +02:00

22 lines
896 B
Plaintext

shader_type canvas_item;
render_mode unshaded;
uniform vec2 icon_size = vec2(32.0);
uniform float corner_radius = 4.0;
uniform float cooldown : hint_range(0.0, 1.0) = 0.0;
uniform float dimming : hint_range(0.0, 1.0) = 0.0;
void fragment() {
vec4 artwork = texture(TEXTURE, UV);
vec2 p = abs((UV - 0.5) * icon_size) - icon_size * 0.5 + corner_radius;
float distance_to_edge = length(max(p, vec2(0.0))) + min(max(p.x, p.y), 0.0) - corner_radius;
float aa = max(fwidth(distance_to_edge), 0.5);
float mask = 1.0 - smoothstep(-aa * 0.5, aa * 0.5, distance_to_edge);
float luminance = dot(artwork.rgb, vec3(0.2126, 0.7152, 0.0722));
artwork.rgb = mix(artwork.rgb, vec3(luminance), dimming * 0.65);
artwork.rgb *= 1.0 - dimming * 0.38;
float cooling = (1.0 - step(cooldown, UV.y)) * step(0.001, cooldown);
artwork.rgb *= 1.0 - cooling * 0.6;
COLOR = vec4(artwork.rgb, artwork.a * mask);
}