init
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
shader_type canvas_item;
|
||||
render_mode blend_premul_alpha;
|
||||
|
||||
uniform int hide_mode : hint_range(0, 1) = 0;
|
||||
uniform vec4 outline_color : source_color = vec4(0.0, 0.0, 0.0, 1.0);
|
||||
uniform vec4 invert_outline_color : source_color = vec4(1.0, 1.0, 1.0, 1.0);
|
||||
uniform vec2 pixel_size = vec2(0.001953125, 0.001953125);
|
||||
|
||||
void fragment() {
|
||||
vec4 color = texture(TEXTURE, UV) * COLOR;
|
||||
|
||||
#ifdef ALPHA_CLIP
|
||||
if (color.a < 0.001)
|
||||
discard;
|
||||
#endif
|
||||
|
||||
if (hide_mode > 0) {
|
||||
color.r = 0.0;
|
||||
color.g = 0.0;
|
||||
color.b = 0.0;
|
||||
}
|
||||
|
||||
if (color.a > 0.99) {
|
||||
COLOR = color;
|
||||
} else {
|
||||
float max_alpha = 0.0;
|
||||
|
||||
for (int x = -2; x <= 2; x++) {
|
||||
for (int y = -2; y <= 2; y++) {
|
||||
if (x == 0 && y == 0)
|
||||
continue;
|
||||
|
||||
vec2 offset = vec2(float(x), float(y)) * pixel_size;
|
||||
float neighbor_alpha = texture(TEXTURE, UV + offset).a;
|
||||
max_alpha = max(max_alpha, neighbor_alpha);
|
||||
}
|
||||
}
|
||||
|
||||
if (max_alpha > 0.99) {
|
||||
if (hide_mode > 0)
|
||||
COLOR = invert_outline_color;
|
||||
else
|
||||
COLOR = outline_color;
|
||||
} else {
|
||||
COLOR = color;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user