X-Git-Url: https://git.sesse.net/?p=movit;a=blobdiff_plain;f=lift_gamma_gain_effect.frag;h=ceb2081c752591e71277b10af64e8e499f2f2cb1;hp=9047d64bbc2230c263e6fb5a6025642435cf8cd0;hb=88e9f85b9e48e05f0f9d35d199db03e5352919c4;hpb=58e7b9a8164bdaad7b0c698b2d0d80db53d79a5c diff --git a/lift_gamma_gain_effect.frag b/lift_gamma_gain_effect.frag index 9047d64..ceb2081 100644 --- a/lift_gamma_gain_effect.frag +++ b/lift_gamma_gain_effect.frag @@ -1,6 +1,8 @@ +// Implicit uniforms: +// // These are calculated in the host code to save some arithmetic. -uniform vec3 PREFIX(gain_pow_inv_gamma); // gain^(1/gamma). -uniform vec3 PREFIX(inv_gamma_22); // 2.2 / gamma. +// uniform vec3 PREFIX(gain_pow_inv_gamma); // gain^(1/gamma). +// uniform vec3 PREFIX(inv_gamma_22); // 2.2 / gamma. vec4 FUNCNAME(vec2 tc) { vec4 x = INPUT(tc); @@ -12,6 +14,10 @@ vec4 FUNCNAME(vec2 tc) { x.rgb = pow(x.rgb, vec3(1.0/2.2)); x.rgb += PREFIX(lift) * (vec3(1) - x.rgb); + + // Clip out-of-gamut values again. + x.rgb = max(x.rgb, 0.0); + x.rgb = pow(x.rgb, PREFIX(inv_gamma_22)); x.rgb *= PREFIX(gain_pow_inv_gamma); x.rgb *= x.aaa;