From 3b3d8e893d586e758cae96a6b4c8508cb65afe14 Mon Sep 17 00:00:00 2001 From: dec05eba Date: Sun, 9 Feb 2025 16:32:03 +0100 Subject: Make hdr better for limited range colors --- src/color_conversion.c | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/src/color_conversion.c b/src/color_conversion.c index de182a0..1dd3fe8 100644 --- a/src/color_conversion.c +++ b/src/color_conversion.c @@ -95,10 +95,17 @@ static int load_shader_y(gsr_shader *shader, gsr_egl *egl, gsr_color_uniforms *u const char *main_code = NULL; if(kde_gamma_correction) { - main_code = - " vec4 pixel = texture(tex1, texcoords_out); \n" - " FragColor.x = pow((RGBtoYUV * vec4(pixel.rgb, 1.0)).x, 0.55)*0.8; \n" - " FragColor.w = pixel.a; \n"; + if(color_range == GSR_COLOR_RANGE_FULL) { + main_code = + " vec4 pixel = texture(tex1, texcoords_out); \n" + " FragColor.x = pow((RGBtoYUV * vec4(pixel.rgb, 1.0)).x, 0.62); \n" + " FragColor.w = pixel.a; \n"; + } else { + main_code = + " vec4 pixel = texture(tex1, texcoords_out); \n" + " FragColor.x = pow((RGBtoYUV * vec4(pixel.rgb, 1.0)).x, 0.72); \n" + " FragColor.w = pixel.a; \n"; + } } else { main_code = " vec4 pixel = texture(tex1, texcoords_out); \n" @@ -165,10 +172,17 @@ static unsigned int load_shader_uv(gsr_shader *shader, gsr_egl *egl, gsr_color_u const char *main_code = NULL; if(kde_gamma_correction) { - main_code = - " vec4 pixel = texture(tex1, texcoords_out); \n" - " FragColor.xy = (RGBtoYUV * vec4(pow(pixel.rgb, vec3(0.3)), 1.0)).yz; \n" - " FragColor.w = pixel.a; \n"; + if(color_range == GSR_COLOR_RANGE_FULL) { + main_code = + " vec4 pixel = texture(tex1, texcoords_out); \n" + " FragColor.xy = (RGBtoYUV * vec4(pow(pixel.rgb, vec3(0.3)), 1.0)).yz; \n" + " FragColor.w = pixel.a; \n"; + } else { + main_code = + " vec4 pixel = texture(tex1, texcoords_out); \n" + " FragColor.xy = (RGBtoYUV * vec4(pow(pixel.rgb, vec3(0.3)), 1.0)).yz; \n" + " FragColor.w = pixel.a; \n"; + } } else { main_code = " vec4 pixel = texture(tex1, texcoords_out); \n" -- cgit v1.2.3-70-g09d2