From: Ronag Date: Sun, 21 Aug 2011 16:35:59 +0000 (+0000) Subject: 2.0. image_mixer: "replace" blend mode was not necessary. X-Git-Tag: 2.0.1~87 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=9852656342ffa51e8022fe13ec7518f89ecc0381;p=casparcg 2.0. image_mixer: "replace" blend mode was not necessary. git-svn-id: https://casparcg.svn.sourceforge.net/svnroot/casparcg/server/branches/2.0.0.2@1253 362d55ac-95cf-4e76-9f9a-cbaa9c17b72d --- diff --git a/core/mixer/image/blend_modes.h b/core/mixer/image/blend_modes.h index 1684639ed..b008a9983 100644 --- a/core/mixer/image/blend_modes.h +++ b/core/mixer/image/blend_modes.h @@ -35,7 +35,6 @@ struct blend_mode saturation, color, luminosity, - replace, blend_mode_count }; }; diff --git a/core/mixer/image/image_kernel.cpp b/core/mixer/image/image_kernel.cpp index 8a390c389..3209bd4e9 100644 --- a/core/mixer/image/image_kernel.cpp +++ b/core/mixer/image/image_kernel.cpp @@ -127,16 +127,7 @@ struct image_kernel::implementation : boost::noncopyable } else { - switch(item.blend_mode) - { - case blend_mode::replace: - ogl.blend_func_separate(GL_ONE, GL_ZERO, GL_ONE, GL_ONE); - break; - case blend_mode::normal: - default: - ogl.blend_func_separate(GL_ONE, GL_ONE_MINUS_SRC_ALPHA, GL_ONE, GL_ONE_MINUS_SRC_ALPHA); - break; - } + ogl.blend_func_separate(GL_ONE, GL_ONE_MINUS_SRC_ALPHA, GL_ONE, GL_ONE_MINUS_SRC_ALPHA); } // Setup image-adjustements diff --git a/core/mixer/image/image_mixer.cpp b/core/mixer/image/image_mixer.cpp index 5ed421e7e..d70dc4fed 100644 --- a/core/mixer/image/image_mixer.cpp +++ b/core/mixer/image/image_mixer.cpp @@ -106,26 +106,19 @@ private: if(layer.front().blend_mode != blend_mode::normal && has_overlapping_items(layer)) { - auto layer_draw_buffer = std::make_pair(0, create_device_buffer(4)); // int is fields flag + auto layer_draw_buffer = create_device_buffer(4); // int is fields flag auto layer_blend_mode = layer.front().blend_mode; BOOST_FOREACH(auto& item, layer) { - if(layer_draw_buffer.first & item.transform.field_mode) - item.blend_mode = blend_mode::normal; // Disable blending and just merge, it will be used when merging back into render stack. - else - { - item.blend_mode = blend_mode::replace; // Target field is empty, no blending, just copy - layer_draw_buffer.first |= item.transform.field_mode; - } - - draw_item(std::move(item), *layer_draw_buffer.second, local_key_buffer, layer_key_buffer); + item.blend_mode = blend_mode::normal; // Disable blending and just merge. + draw_item(std::move(item), *layer_draw_buffer, local_key_buffer, layer_key_buffer); } render_item item; item.pix_desc.pix_fmt = pixel_format::bgra; item.pix_desc.planes = list_of(pixel_format_desc::plane(channel_.get_format_desc().width, channel_.get_format_desc().height, 4)); - item.textures = list_of(layer_draw_buffer.second); + item.textures = list_of(layer_draw_buffer); item.transform = frame_transform(); item.blend_mode = layer_blend_mode; diff --git a/core/mixer/image/image_shader.cpp b/core/mixer/image/image_shader.cpp index 77a370458..d9b83877f 100644 --- a/core/mixer/image/image_shader.cpp +++ b/core/mixer/image/image_shader.cpp @@ -69,8 +69,6 @@ std::string get_blend_color_func() " \n" "vec4 blend(vec4 fore) \n" "{ \n" - " if(blend_mode == 29) // replace \n" - " return fore; \n" " vec4 back = texture2D(background, gl_TexCoord[1].st).bgra; \n" " fore.rgb = get_blend_color(back.rgb, fore.rgb); \n" " return fore + (1.0-fore.a)*back; \n"