diff --git a/data/layout.xml b/data/layout.xml index caa4f70..dcbe2b9 100644 --- a/data/layout.xml +++ b/data/layout.xml @@ -159,7 +159,7 @@ - + diff --git a/engine/app_shaders.cpp b/engine/app_shaders.cpp index 8ea5459..615feb3 100644 --- a/engine/app_shaders.cpp +++ b/engine/app_shaders.cpp @@ -105,11 +105,13 @@ void App::initShaders() "vec3 blend_multiply(vec4 base, vec4 stroke, float alpha_tot) { return mix(stroke.rgb, mix(base.rgb, base.rgb*stroke.rgb, stroke.a/alpha_tot), base.a/alpha_tot); }\n" "vec3 blend_screen(vec4 base, vec4 stroke, float alpha_tot) { return mix(stroke.rgb, mix(base.rgb, 1.0-(1.0-base.rgb)*(1.0-stroke.rgb), stroke.a/alpha_tot), base.a/alpha_tot); }\n" "vec3 blend_colorDodge(vec4 base, vec4 stroke, float alpha_tot) { return mix(stroke.rgb, mix(base.rgb, base.rgb/(1.0-stroke.rgb), stroke.a/alpha_tot), base.a/alpha_tot); }\n" + "vec3 blend_overlay(vec4 base, vec4 stroke, float alpha_tot) { return mix(stroke.rgb, mix(base.rgb, mix(2.0*base.rgb*stroke.rgb, 1.0-2.0*(1.0-base.rgb)*(1.0-stroke.rgb), floor(base.rgb*2.0)), stroke.a/alpha_tot), base.a/alpha_tot); }\n" "vec3 blend(vec4 base, vec4 stroke, float alpha_tot, int mode) { switch(mode){\n" " case 0: return blend_normal(base, stroke, alpha_tot);" " case 1: return blend_multiply(base, stroke, alpha_tot);" " case 2: return blend_screen(base, stroke, alpha_tot);" " case 3: return blend_colorDodge(base, stroke, alpha_tot);" + " case 4: return blend_overlay(base, stroke, alpha_tot);" "}}\n" "void main(){\n" " mediump vec4 base = texture(tex, uv.xy);\n"