From 704ecb6bbabe4a73c45bb6ae2433754bb8260bde Mon Sep 17 00:00:00 2001 From: Andreas Grois Date: Sat, 10 Mar 2018 15:43:36 +0100 Subject: Gamma correction for output --- BuddhaTest/src/Helpers.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'BuddhaTest/src/Helpers.cpp') diff --git a/BuddhaTest/src/Helpers.cpp b/BuddhaTest/src/Helpers.cpp index 881d01f..bde6b8a 100644 --- a/BuddhaTest/src/Helpers.cpp +++ b/BuddhaTest/src/Helpers.cpp @@ -5,6 +5,7 @@ #include #include #include +#include namespace Helpers { @@ -154,7 +155,7 @@ namespace Helpers return ProgramID; } - void WriteOutputPNG(const std::vector& data, unsigned int width, unsigned int bufferHeight) + void WriteOutputPNG(const std::vector& data, unsigned int width, unsigned int bufferHeight, double gamma) { std::vector pngData(3*width*2*bufferHeight); std::vector rows{2*bufferHeight}; @@ -170,7 +171,14 @@ namespace Helpers } for(unsigned int i = 0; i < data.size();++i) { - pngData[data.size() + i] = (255*data[i] + (maxValue/2))/maxValue; + if(fabs(gamma - 1.0) > 0.0001) + { + pngData[data.size() + i] = 255.0 * pow(static_cast(data[i])/static_cast(maxValue),gamma); + } + else + { + pngData[data.size() + i] = (255*data[i] + (maxValue/2))/maxValue; + } } for(int i = 0; i < bufferHeight;++i) { -- cgit v1.2.3