mirror of
https://github.com/Orama-Interactive/Pixelorama.git
synced 2025-02-13 09:13:07 +00:00
38 lines
789 B
Plaintext
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;
|
|
}
|