]> git.sesse.net Git - casparcg/commitdiff
* Instead of merging the chroma key conditional compilation, the uniform conditional...
authorHelge Norberg <helge.norberg@svt.se>
Tue, 9 Jun 2015 10:52:40 +0000 (12:52 +0200)
committerHelge Norberg <helge.norberg@svt.se>
Tue, 9 Jun 2015 10:52:40 +0000 (12:52 +0200)
accelerator/ogl/image/image_kernel.cpp
accelerator/ogl/image/image_shader.cpp

index a90dace01356dd8851fe10081fed6bd3225860b9..0bb2643c7ec47b2a48917bbd325f172c6456a141 100644 (file)
@@ -261,9 +261,13 @@ struct image_kernel::impl
                shader_->set("pixel_format",    params.pix_desc.format);
                shader_->set("opacity",                 params.transform.is_key ? 1.0 : params.transform.opacity);      
 
-               shader_->set("chroma_mode",             static_cast<int>(params.transform.chroma.key));
-               shader_->set("chroma_blend",    params.transform.chroma.threshold, params.transform.chroma.softness);
-               shader_->set("chroma_spill",    params.transform.chroma.spill);
+               if (params.transform.chroma.key != core::chroma::type::none)
+               {
+                       shader_->set("chroma", true);
+                       shader_->set("chroma_mode", static_cast<int>(params.transform.chroma.key));
+                       shader_->set("chroma_blend", params.transform.chroma.threshold, params.transform.chroma.softness);
+                       shader_->set("chroma_spill", params.transform.chroma.spill);
+               }
 
                // Setup blend_func
                
index f9b49f03e97141936dcc4b6e67cbf644fc3a2588..070e2ed3f2c02140ad316738cae177d387649e93 100644 (file)
@@ -190,6 +190,7 @@ std::string get_fragment(bool blend_modes)
                        uniform float           sat;
                        uniform float           con;
 
+                       uniform bool            chroma;
                        uniform int                     chroma_mode;
                        uniform vec2            chroma_blend;
                        uniform float           chroma_spill;
@@ -293,7 +294,8 @@ std::string get_fragment(bool blend_modes)
                        void main()
                        {
                                vec4 color = get_rgba_color();
-                               color = chroma_key(color);
+                               if (chroma)
+                                       color = chroma_key(color);
                                if(levels)
                                        color.rgb = LevelsControl(color.rgb, min_input, gamma, max_input, min_output, max_output);
                                if(csb)