From 415f6b6bdb56070a0481119d060fcde9a18986d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gef=C3=BCllte=20Taubenbrust?= <72752000+GefullteTaubenbrust2@users.noreply.github.com> Date: Wed, 22 May 2024 21:05:26 +0200 Subject: [PATCH] Update opengl_fragment.glsl --- client/shaders/second_stage/opengl_fragment.glsl | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/client/shaders/second_stage/opengl_fragment.glsl b/client/shaders/second_stage/opengl_fragment.glsl index f68310844..99af6c618 100644 --- a/client/shaders/second_stage/opengl_fragment.glsl +++ b/client/shaders/second_stage/opengl_fragment.glsl @@ -150,14 +150,20 @@ void main(void) color.rgb *= 0.8 * pow(1.0 - length(uv - vec2(0.5)) * 1.4, 0.9) + 0.3; #endif -#ifdef ENABLE_COLOR_GRADING - color.rgb = pow(color.rgb * vec3(1.3, 1.0, 0.8), vec3(1.3, 1.0, 0.9)); -#endif - #if ENABLE_TONE_MAPPING color = applyToneMapping(color); #endif +#ifdef ENABLE_COLOR_GRADING + // ASC CDL color grading + const vec3 slope = vec3(1.2, 1.0, 0.8); + const vec3 power = vec3(1.25, 1.0, 0.9); + + // Filter out blue pixels, because the color grading tends to wash them out. + float blue_factor = clamp((color.b - max(color.r, color.g)) / max(0.01, min(color.r, color.g)), 0.0, 1.0); + + color.rgb = mix(color.rgb, pow(color.rgb * slope, power), pow(1. - blue_factor, 4.)); +#endif color.rgb = applySaturation(color.rgb, saturation); }