From 04e1b8732d96f553b5df711b4129d3c6e8a5fabd Mon Sep 17 00:00:00 2001 From: jojo61 Date: Fri, 6 Mar 2020 11:51:20 +0100 Subject: [PATCH] correct conversion BT709 colors to sRGB --- shaders.h | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/shaders.h b/shaders.h index a7b19e7..cde79f6 100644 --- a/shaders.h +++ b/shaders.h @@ -361,10 +361,14 @@ static GLuint sc_generate(GLuint gl_prog, enum AVColorSpace colorspace) GLSL("// color conversion \n"); GLSL("color.rgb = mat3(colormatrix) * color.rgb + colormatrix_c; \n"); GLSL("color.a = 1.0; \n"); -#ifdef GAMMA - GLSL("// delinearize gamma \n"); - GLSL("color.rgb = clamp(color.rgb, 0.0, 1.0); \n"); // delinearize gamma + + GLSL("// linearize gamma \n"); + GLSL("color.rgb = clamp(color.rgb, 0.0, 1.0); \n"); // linearize gamma GLSL("color.rgb = pow(color.rgb, vec3(2.4)); \n"); +#ifndef GAMMA + GLSL("// delinearize gamma to sRGB \n"); + GLSL("color.rgb = max(color.rgb, 0.0); \n"); + GLSL("color.rgb = mix(color.rgb * vec3(12.92), vec3(1.055) * pow(color.rgb, vec3(1.0/2.4)) - vec3(0.055), bvec3(lessThanEqual(vec3(0.0031308), color.rgb))); \n"); #endif GLSL("// color mapping \n"); GLSL("out_color = color; \n");