From bb950f407ae396399427f3d35af388dfc666d7b5 Mon Sep 17 00:00:00 2001 From: ronag Date: Wed, 9 Nov 2011 14:29:17 +0000 Subject: [PATCH] 2.0.2: image_mixer: Fixed blending modes. Use straight alpha in calculations. git-svn-id: https://casparcg.svn.sourceforge.net/svnroot/casparcg/server/branches/2.0.0.2@1551 362d55ac-95cf-4e76-9f9a-cbaa9c17b72d --- core/mixer/image/image_shader.cpp | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/core/mixer/image/image_shader.cpp b/core/mixer/image/image_shader.cpp index 6d89630c2..f6a81cb83 100644 --- a/core/mixer/image/image_shader.cpp +++ b/core/mixer/image/image_shader.cpp @@ -69,16 +69,14 @@ std::string get_blend_color_func() " \n" "vec4 blend(vec4 fore) \n" "{ \n" - " vec4 back = texture2D(background, gl_TexCoord[1].st).bgra; \n" - " fore.rgb = get_blend_color(back.rgb, fore.rgb); \n" - " \n" - " switch(keyer) \n" - " { \n" - " case 0: return fore + (1.0-fore.a)*back; // linear \n" - " case 1: return fore + back; // additive \n" + " vec4 back = texture2D(background, gl_TexCoord[1].st).bgra; \n" + " if(blend_mode != 0) \n" + " fore.rgb = get_blend_color(back.rgb/(back.a+0.0000001), fore.rgb/(fore.a+0.0000001))*fore.a;\n" + " switch(keyer) \n" + " { \n" + " case 1: return fore + back; // additive \n" + " default: return fore + (1.0-fore.a)*back; // linear \n" " } \n" - " \n" - " return fore + (1.0-fore.a)*back; \n" "} \n"; } -- 2.39.2