small racing game im working on
Diffstat (limited to 'ui/editor/outline.gdshader')
-rw-r--r--ui/editor/outline.gdshader21
1 files changed, 21 insertions, 0 deletions
diff --git a/ui/editor/outline.gdshader b/ui/editor/outline.gdshader
new file mode 100644
index 0000000..4a75622
--- /dev/null
+++ b/ui/editor/outline.gdshader
@@ -0,0 +1,21 @@
+shader_type canvas_item;
+
+uniform vec4 line_color : source_color = vec4(1);
+uniform float line_thickness : hint_range(0, 10) = 1.0;
+
+void fragment() {
+ vec2 size = TEXTURE_PIXEL_SIZE * line_thickness;
+
+ 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 color = texture(TEXTURE, UV);
+ COLOR = mix(color, line_color, outline - color.a);
+} \ No newline at end of file