From 88949c63c58b417f50e977e6db4b9543eaa54ce8 Mon Sep 17 00:00:00 2001 From: LeenkxTeam Date: Sat, 5 Apr 2025 13:11:56 +0000 Subject: [PATCH] Update leenkx/Shaders/std/tonemap.glsl --- leenkx/Shaders/std/tonemap.glsl | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/leenkx/Shaders/std/tonemap.glsl b/leenkx/Shaders/std/tonemap.glsl index d68a150..2d87c87 100644 --- a/leenkx/Shaders/std/tonemap.glsl +++ b/leenkx/Shaders/std/tonemap.glsl @@ -41,14 +41,20 @@ vec3 tonemapReinhard(const vec3 color) { // AGX Simple vec3 tonemapAgXSimple(vec3 x) { - const vec3 AgX_A = vec3(0.5, 0.5, 0.5); - const vec3 AgX_B = vec3(0.5, 0.5, 0.5); - const vec3 AgX_C = vec3(1.0, 1.0, 1.0); - const vec3 AgX_D = vec3(0.0, 0.0, 0.0); - const vec3 AgX_E = vec3(0.0, 0.0, 0.0); - const vec3 AgX_F = vec3(1.0, 1.0, 1.0); - - return (x * (AgX_A * x + AgX_B)) / (x * (AgX_C * x + AgX_D) + AgX_E) + AgX_F; + // TODO CORRECT AND OPTIMIZE + x = max(x, vec3(0.0)); + float exposure = 0.6; + x *= exposure; + const vec3 AgX_A = vec3(0.92, 0.92, 0.72); + const vec3 AgX_B = vec3(0.24, 0.24, 0.36); + const vec3 AgX_C = vec3(0.92, 0.92, 0.72); + const vec3 AgX_D = vec3(0.24, 0.24, 0.36); + const vec3 AgX_E = vec3(0.08, 0.08, 0.12); + const vec3 AgX_F = vec3(0.0); + vec3 result = (x * (AgX_A * x + AgX_B)) / (x * (AgX_C * x + AgX_D) + AgX_E) + AgX_F; + float luma = dot(result, vec3(0.2126, 0.7152, 0.0722)); + result = mix(vec3(luma), result, 0.6); + return clamp(result, vec3(0.0), vec3(1.0)); } // AGX Full Contrast Approx