diff options
author | dec05eba <dec05eba@protonmail.com> | 2025-02-09 16:32:03 +0100 |
---|---|---|
committer | dec05eba <dec05eba@protonmail.com> | 2025-02-09 16:32:03 +0100 |
commit | 3b3d8e893d586e758cae96a6b4c8508cb65afe14 (patch) | |
tree | e313db6b78bf2ec234616d419e5afc7111533572 | |
parent | a3b9b89a7fd6dbde224d158d38a63b7210092e72 (diff) |
Make hdr better for limited range colors
-rw-r--r-- | src/color_conversion.c | 30 |
1 files 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" |