shader_->set("has_local_key", local_key);\r
shader_->set("has_layer_key", layer_key);\r
shader_->set("pixel_format", item.pix_desc.pix_fmt); \r
+ shader_->set("opacity", item.transform.get_opacity()); \r
\r
// Setup blend_func\r
\r
switch(item.transform.get_blend_mode())\r
{\r
case image_transform::blend_mode::add: \r
- ogl.blend_func_separate(GL_ONE, GL_ONE, GL_ONE, GL_ONE);\r
+ ogl.blend_func_separate(GL_ONE, GL_ONE, GL_ONE, GL_ONE_MINUS_SRC_ALPHA);\r
break;\r
case image_transform::blend_mode::replace: \r
ogl.blend_func_separate(GL_ONE, GL_ZERO, GL_ONE, GL_ONE);\r
break;\r
case image_transform::blend_mode::screen:\r
- ogl.blend_func_separate(GL_ONE, GL_ONE_MINUS_SRC_COLOR, GL_ONE, GL_ONE);\r
+ ogl.blend_func_separate(GL_ONE, GL_ONE_MINUS_SRC_COLOR, GL_ONE, GL_ONE_MINUS_SRC_ALPHA);\r
+ case image_transform::blend_mode::normal:\r
default:\r
- ogl.blend_func_separate(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_ONE, GL_ONE);\r
+ ogl.blend_func_separate(GL_ONE, GL_ONE_MINUS_SRC_ALPHA, GL_ONE, GL_ONE_MINUS_SRC_ALPHA);\r
break;\r
}\r
}\r
\r
ogl.viewport(0, 0, background->width(), background->height());\r
\r
- GL(glColor4d(item.transform.get_gain(), item.transform.get_gain(), item.transform.get_gain(), item.transform.get_is_key() ? 1.0 : item.transform.get_opacity()));\r
+ GL(glColor4d(item.transform.get_gain(), item.transform.get_gain(), item.transform.get_gain(), item.transform.get_opacity()));\r
\r
auto m_p = item.transform.get_clip_translation();\r
auto m_s = item.transform.get_clip_scale();\r