X-Git-Url: https://git.sesse.net/?p=movit;a=blobdiff_plain;f=gamma_expansion_effect_rec709.glsl;fp=gamma_expansion_effect_rec709.glsl;h=00259ccf079983b7685cc7de8dd8249adb80e3c7;hp=0000000000000000000000000000000000000000;hb=ca8d64aa3d306d31f53979ba95b3f9afdf6e4d92;hpb=193e18b583fde18f2f3b3192d61121f3173e0e27 diff --git a/gamma_expansion_effect_rec709.glsl b/gamma_expansion_effect_rec709.glsl new file mode 100644 index 0000000..00259cc --- /dev/null +++ b/gamma_expansion_effect_rec709.glsl @@ -0,0 +1,31 @@ +// Expand Rec. 601/Rec. 709 gamma curve. + +#if 0 + +// if we have the lut +uniform sampler1D PREFIX(rec709_tex); + +vec4 FUNCNAME(vec2 tc) { + vec4 x = LAST_INPUT(tc); + + x.r = texture1D(PREFIX(rec709_tex), x.r).x; + x.g = texture1D(PREFIX(rec709_tex), x.g).x; + x.b = texture1D(PREFIX(rec709_tex), x.b).x; + + return x; +} + +#else + +// use arithmetic (slow) +vec4 FUNCNAME(vec2 tc) { + vec4 x = LAST_INPUT(tc); + + vec3 a = x.rgb * vec3(1.0/4.500); + vec3 b = pow((x.rgb + vec3(0.099)) * vec3(1.0/1.099), vec3(1.0/0.45)); + vec3 f = vec3(greaterThan(x.rgb, vec3(0.081))); + + return vec4(mix(a, b, f), x.a); +} + +#endif