const THRESHOLD: &str = r#"
void main() {
vec2 uv = gl_FragCoord.xy / u_res;
vec4 src = texture(tex, uv);
float sm = max(p1, 0.0001) * 0.5;
vec3 c;
if (p2 >= 0.5) {
c = smoothstep(vec3(p0 - sm), vec3(p0 + sm), src.rgb);
} else {
c = vec3(smoothstep(p0 - sm, p0 + sm, dot(src.rgb, vec3(0.2126, 0.7152, 0.0722))));
}
vec4 res = vec4(c, src.a);
float m = u_has_mask > 0.5 ? texture(u_mask, uv).r : 1.0;
out_color = mix(src, res, m);
}
"#;Expand description
Hard/soft threshold on luma, or per channel when p2 >= 0.5.