X-Git-Url: https://git.sesse.net/?p=movit;a=blobdiff_plain;f=gamma_compression_effect_srgb.glsl;fp=gamma_compression_effect_srgb.glsl;h=2d53e08a58833ba8802fcd42c6e2d1093dcb3368;hp=0000000000000000000000000000000000000000;hb=f6c44598c9dad9ddd024c5f8f010d179a6d971fd;hpb=430394b9790b9a7083aac549f607047499788710 diff --git a/gamma_compression_effect_srgb.glsl b/gamma_compression_effect_srgb.glsl new file mode 100644 index 0000000..2d53e08 --- /dev/null +++ b/gamma_compression_effect_srgb.glsl @@ -0,0 +1,31 @@ +// Compress to sRGB gamma curve. + +#if 0 + +// if we have the lut +uniform sampler1D PREFIX(srgb_tex); + +vec4 FUNCNAME(vec2 tc) { + vec4 x = LAST_INPUT(tc); + + x.r = texture1D(PREFIX(srgb_tex), x.r).x; + x.g = texture1D(PREFIX(srgb_tex), x.g).x; + x.b = texture1D(PREFIX(srgb_tex), x.b).x; + + return x; +} + +#else + +// use arithmetic (slow) +vec4 FUNCNAME(vec2 tc) { + vec4 x = LAST_INPUT(tc); + + vec3 a = vec3(12.92) * x.rgb; + vec3 b = vec3(1.055) * pow(x.rgb, vec3(1.0/2.4)) - vec3(0.055); + vec3 f = vec3(greaterThan(x.rgb, vec3(0.0031308))); + + return vec4(mix(a, b, f), x.a); +} + +#endif