Improved mask also work on erase. Improved shaders for layer opacity, now when drawing doesn't change opacity. Improved layers panel layout to be similar to PS. Added layer blending option and visibility. Added custom icons to checkboxes and fixed the combobox items.
This commit is contained in:
@@ -77,17 +77,32 @@ 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 mediump float stroke_alpha;\n"
|
||||
"uniform mediump vec2 resolution;\n"
|
||||
"uniform bool fragUV2;\n"
|
||||
"uniform bool mask;\n"
|
||||
"in mediump vec2 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 vec2 uv2 = fragUV2 ? (gl_FragCoord.st / resolution) : uv;\n"
|
||||
" mediump vec4 base = texture(tex, uv2);\n"
|
||||
" mediump vec4 stroke = texture(tex_stroke, uv);\n"
|
||||
" mediump float a = base.a - (stroke.a * alpha);\n"
|
||||
" frag = vec4(base.rgb, clamp(a, 0.0, 1.0));\n"
|
||||
" stroke.a = mask ? stroke.a * stroke_alpha * blur(tex_mask, uv2).r : stroke.a * stroke_alpha;\n"
|
||||
" frag = vec4(base.rgb, clamp((base.a - stroke.a) * alpha, 0.0, 1.0));\n"
|
||||
"}\n";
|
||||
// TEXTURE COMP DRAW
|
||||
static const char* shader_comp_draw_f =
|
||||
@@ -97,6 +112,7 @@ void App::initShaders()
|
||||
"uniform sampler2D tex_mask;\n"
|
||||
"uniform sampler2D tex_stencil;\n"
|
||||
"uniform mediump float alpha;\n"
|
||||
"uniform mediump float stroke_alpha;\n"
|
||||
"uniform mediump int blend_mode;\n"
|
||||
"uniform mediump vec2 resolution;\n"
|
||||
"uniform bool lock;\n"
|
||||
@@ -141,13 +157,12 @@ void App::initShaders()
|
||||
" mediump vec2 uv2 = fragUV2 ? (gl_FragCoord.st / resolution) : uv;\n"
|
||||
" mediump vec4 base = texture(tex, uv2);\n"
|
||||
" mediump vec4 stroke = texture(tex_stroke, uv);\n"
|
||||
" stroke.a = mask ? stroke.a * alpha * blur(tex_mask, uv2).r : stroke.a * alpha;\n"
|
||||
|
||||
" if (!lock && base.a == 0.0) { frag = stroke; return; }\n"
|
||||
" stroke.a = mask ? stroke.a * stroke_alpha * blur(tex_mask, uv2).r : stroke.a * stroke_alpha;\n"
|
||||
" if (!lock && base.a == 0.0) { frag = stroke * vec4(1.0, 1.0, 1.0, alpha); return; }\n"
|
||||
" mediump float contribution = (1.0 - base.a) * stroke.a;\n"
|
||||
" mediump float alpha_tot = base.a + contribution;"
|
||||
" mediump vec3 rgb = blend(base, stroke, alpha_tot, blend_mode);\n"
|
||||
" frag = vec4(rgb, (lock ? base.a : alpha_tot));\n"
|
||||
" frag = vec4(rgb, (lock ? base.a : alpha_tot) * alpha);\n"
|
||||
"}\n";
|
||||
|
||||
// TEXTURE ATLAS
|
||||
|
||||
Reference in New Issue
Block a user