]> git.sesse.net Git - casparcg/blobdiff - core/mixer/image/image_mixer.cpp
2.0. image_mixer: - Renderer is now properly and fully pre-multiplied. - Removed...
[casparcg] / core / mixer / image / image_mixer.cpp
index c01e801b9833f1a022ad2869bdb5fa5900715b9a..ee84d8806be722d224ce8cff1f66c7601f77883d 100644 (file)
@@ -152,31 +152,33 @@ public:
 \r
                std::pair<int, std::shared_ptr<device_buffer>> local_key_buffer;\r
                                        \r
-               if(has_overlapping_items(layer, layer.front().transform.get_blend_mode()))\r
-               {\r
-                       auto local_draw_buffer = create_device_buffer(4);       \r
-\r
-                       int mode = 0;\r
-                       BOOST_FOREACH(auto& item, layer)\r
-                       {\r
-                               if(mode & item.mode)\r
-                                       item.transform.set_blend_mode(image_transform::blend_mode::normal); // Disable blending, it will be used when merging back into render stack.\r
-                               else\r
-                               {\r
-                                       item.transform.set_blend_mode(image_transform::blend_mode::replace); // Target field is empty, no blending\r
-                                       mode |= item.mode;\r
-                               }\r
-\r
-                               draw_item(std::move(item), local_draw_buffer, local_key_buffer, layer_key_buffer);              \r
-                       }\r
-\r
-                       kernel_.draw(channel_.ogl(), create_render_item(local_draw_buffer, layer.front().transform.get_blend_mode()), draw_buffer, nullptr, nullptr);\r
-               }\r
-               else // fast path\r
-               {\r
+               //if(has_overlapping_items(layer, layer.front().transform.get_blend_mode()))\r
+               //{\r
+               //      auto local_draw_buffer = create_device_buffer(4);       \r
+\r
+               //      auto local_blend_mode = layer.front().transform.get_blend_mode();\r
+\r
+               //      int fields = 0;\r
+               //      BOOST_FOREACH(auto& item, layer)\r
+               //      {\r
+               //              if(fields & item.mode)\r
+               //                      item.transform.set_blend_mode(image_transform::blend_mode::normal); // Disable blending, it will be used when merging back into render stack.\r
+               //              else\r
+               //              {\r
+               //                      item.transform.set_blend_mode(image_transform::blend_mode::replace); // Target field is empty, no blending, just copy\r
+               //                      fields |= item.mode;\r
+               //              }\r
+\r
+               //              draw_item(std::move(item), local_draw_buffer, local_key_buffer, layer_key_buffer);              \r
+               //      }\r
+\r
+               //      kernel_.draw(channel_.ogl(), create_render_item(local_draw_buffer, local_blend_mode), draw_buffer, nullptr, nullptr);\r
+               //}\r
+               //else // fast path\r
+               //{\r
                        BOOST_FOREACH(auto& item, layer)                \r
                                draw_item(std::move(item), draw_buffer, local_key_buffer, layer_key_buffer);            \r
-               }                                       \r
+               //}                                     \r
 \r
                CASPAR_ASSERT(local_key_buffer.first == 0 || local_key_buffer.first == core::video_mode::progressive);\r
 \r