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
uniform float sat;
uniform float con;
+ uniform bool chroma;
uniform int chroma_mode;
uniform vec2 chroma_blend;
uniform float chroma_spill;
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)