From 2d8c648361defc6ad06b41a113b077feaeab779d Mon Sep 17 00:00:00 2001 From: Alexander Gauggel <agauggel@uni-koblenz.de> Date: Mon, 21 Jun 2021 18:31:41 +0200 Subject: [PATCH] [#81] Nicer tonemapping operator --- .../voxelization/resources/shaders/tonemapping.comp | 13 ++++++++++++- projects/voxelization/src/main.cpp | 2 +- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/projects/voxelization/resources/shaders/tonemapping.comp b/projects/voxelization/resources/shaders/tonemapping.comp index 2383302f..60830169 100644 --- a/projects/voxelization/resources/shaders/tonemapping.comp +++ b/projects/voxelization/resources/shaders/tonemapping.comp @@ -6,6 +6,17 @@ layout(set=0, binding=1, rgba8) uniform image2D outImage; layout(local_size_x = 8, local_size_y = 8, local_size_z = 1) in; +// from: https://knarkowicz.wordpress.com/2016/01/06/aces-filmic-tone-mapping-curve/ +vec3 ACESFilm(vec3 x) +{ + float a = 2.51f; + float b = 0.03f; + float c = 2.43f; + float d = 0.59f; + float e = 0.14f; + return clamp((x*(a*x+b))/(x*(c*x+d)+e), 0, 1); +} + void main(){ if(any(greaterThanEqual(gl_GlobalInvocationID.xy, imageSize(inImage)))){ @@ -13,7 +24,7 @@ void main(){ } ivec2 uv = ivec2(gl_GlobalInvocationID.xy); vec3 linearColor = imageLoad(inImage, uv).rgb; - vec3 tonemapped = linearColor / (linearColor + 1); // reinhard tonemapping + vec3 tonemapped = ACESFilm(linearColor); vec3 gammaCorrected = pow(tonemapped, vec3(1.f / 2.2f)); imageStore(outImage, uv, vec4(gammaCorrected, 0.f)); } \ No newline at end of file diff --git a/projects/voxelization/src/main.cpp b/projects/voxelization/src/main.cpp index bd6bc22a..67033f04 100644 --- a/projects/voxelization/src/main.cpp +++ b/projects/voxelization/src/main.cpp @@ -159,7 +159,7 @@ int main(int argc, const char** argv) { glm::vec3 direction; float padding; glm::vec3 sunColor = glm::vec3(1.f); - float sunStrength = 15.f; + float sunStrength = 20.f; glm::mat4 lightMatrix; }; LightInfo lightInfo; -- GitLab