multiple selection for free mask

This commit is contained in:
2019-05-17 10:54:38 +02:00
parent c4cf0c7e47
commit c4e166fc32
5 changed files with 83 additions and 13 deletions

View File

@@ -0,0 +1,44 @@
[[vertex]]
uniform mat4 mvp;
in vec4 pos;
in vec2 uvs;
out vec2 uv;
void main()
{
uv = uvs;
gl_Position = mvp * vec4(pos.xyz, 1.0);
}
[[fragment]]
uniform sampler2D tex;
in mediump vec2 uv;
out mediump vec4 frag;
void main()
{
mediump float stroke = 1.0 - texture(tex, uv).r;
int zero_count = 0;
if (textureOffset(tex, uv, ivec2(-1, -1)).r > 0.99) zero_count++;
if (textureOffset(tex, uv, ivec2(-1, 0)).r > 0.99) zero_count++;
if (textureOffset(tex, uv, ivec2(-1, +1)).r > 0.99) zero_count++;
if (textureOffset(tex, uv, ivec2( 0, -1)).r > 0.99) zero_count++;
if (textureOffset(tex, uv, ivec2( 0, 0)).r > 0.99) zero_count++;
if (textureOffset(tex, uv, ivec2( 0, +1)).r > 0.99) zero_count++;
if (textureOffset(tex, uv, ivec2(+1, -1)).r > 0.99) zero_count++;
if (textureOffset(tex, uv, ivec2(+1, 0)).r > 0.99) zero_count++;
if (textureOffset(tex, uv, ivec2(+1, +1)).r > 0.99) zero_count++;
mediump float edge = (zero_count > 1 && zero_count < 8) ? 1.0 : 0.0;
const mediump vec4 c1 = vec4(1.0, 1.0, 1.0, 1.0);
const mediump vec4 c2 = vec4(0.9, 0.9, 0.9, 1.0);
mediump vec2 c = floor(fract(uv * 50.0) * 2.0);
mediump float alpha = mix(c.x, 1.0 - c.x, c.y);
frag = vec4(vec3(edge * alpha), edge);
}