1
0
Fork 0
mirror of https://github.com/Orama-Interactive/Pixelorama.git synced 2025-02-13 09:13:07 +00:00
Pixelorama/src/Shaders/ColorSelect.gdshader

38 lines
789 B
Plaintext

shader_type canvas_item;
render_mode unshaded;
uniform sampler2D selection : filter_nearest, hint_default_black;
uniform vec4 color;
uniform float tolerance : hint_range(0.0, 1.0);
uniform int operation = 0; // 0 = add, 1 = subtract, 2 = intersect
bool similar_colors(vec4 c1, vec4 c2, float tol) {
return (
abs(c1.r - c2.r) <= tol
&& abs(c1.g - c2.g) <= tol
&& abs(c1.b - c2.b) <= tol
&& abs(c1.a - c2.a) <= tol
);
}
void fragment() {
vec4 original_color = texture(TEXTURE, UV);
vec4 col = texture(selection, UV);
if (col.rgb == vec3(0.0))
col.a = 0.0;
if (similar_colors(original_color, color, tolerance))
{
if (operation == 0)
col = vec4(1.0);
else if (operation == 1)
col = vec4(0.0);
}
else
if (operation == 2)
col = vec4(0.0);
COLOR = col;
}