implement selection mask with lasso tool
This commit is contained in:
@@ -52,6 +52,7 @@ void App::initShaders()
|
||||
SHADER_VERSION
|
||||
"uniform sampler2D tex;\n"
|
||||
"uniform sampler2D tex_stroke;\n"
|
||||
"uniform sampler2D tex_mask;\n"
|
||||
"uniform mediump float alpha;\n"
|
||||
"uniform bool lock;\n"
|
||||
"in mediump vec3 uv;\n"
|
||||
@@ -67,19 +68,34 @@ void App::initShaders()
|
||||
SHADER_VERSION
|
||||
"uniform sampler2D tex;\n"
|
||||
"uniform sampler2D tex_stroke;\n"
|
||||
"uniform sampler2D tex_mask;\n"
|
||||
"uniform mediump float alpha;\n"
|
||||
"uniform bool lock;\n"
|
||||
"uniform bool mask;\n"
|
||||
"in mediump vec3 uv;\n"
|
||||
"out mediump vec4 frag;\n"
|
||||
"mediump vec4 blur(sampler2D t, mediump vec2 uv){\n"
|
||||
" mediump vec4 sum = texture(t, uv);\n"
|
||||
" sum += textureOffset(t, uv, ivec2(-1, -1));\n"
|
||||
" sum += textureOffset(t, uv, ivec2(-1, 0));\n"
|
||||
" sum += textureOffset(t, uv, ivec2(-1, 1));\n"
|
||||
" sum += textureOffset(t, uv, ivec2( 0, -1));\n"
|
||||
|
||||
" sum += textureOffset(t, uv, ivec2( 0, 1));\n"
|
||||
" sum += textureOffset(t, uv, ivec2( 1, -1));\n"
|
||||
" sum += textureOffset(t, uv, ivec2( 1, 0));\n"
|
||||
" sum += textureOffset(t, uv, ivec2( 1, 1));\n"
|
||||
" return sum / vec4(9.0);\n"
|
||||
"}\n"
|
||||
"void main(){\n"
|
||||
" mediump vec4 base = texture(tex, uv.xy);\n"
|
||||
" mediump vec4 stroke = texture(tex_stroke, uv.xy);\n"
|
||||
" stroke.a = stroke.a * alpha;\n"
|
||||
" stroke.a = mask ? stroke.a * alpha * blur(tex_mask, uv.xy).r : stroke.a * alpha;\n"
|
||||
|
||||
" mediump float contribution = (1.0 - base.a) * stroke.a;\n"
|
||||
" mediump float alpha_tot = base.a + contribution;"
|
||||
" mediump vec3 rgb = mix(base.rgb, stroke.rgb, stroke.a / alpha_tot);\n"
|
||||
" frag = vec4(rgb, lock ? base.a : alpha_tot);\n"
|
||||
" mediump vec3 rgb = mix(base.rgb, stroke.rgb, (stroke.a / alpha_tot));\n"
|
||||
" frag = vec4(rgb, (lock ? base.a : alpha_tot));\n"
|
||||
"}\n";
|
||||
|
||||
// TEXTURE ATLAS
|
||||
|
||||
Reference in New Issue
Block a user