So I read about tonemapping and Gamma Correction recently and have implemented it in my path tracer.
For the time being I'm using Reinhard tonemapping operator as described in his paper
$L_d = L_w * (1+L_w/L^2_{white})/(1+L_w)$
and applying it on the luminance channel and scaling it effectively so the colors wouldn't change. I'm applying a Gamma correction of 2.2. Here is the snippet.
float lum_world = getYluminance(hdr_col); //Find the Y channel of XYZ from RGB float lum_display = lum_world * (1 + lum_world/(lum_white * lum_white) ) / (1+lum_world); float4 ldr_color = lum_display *(hdr_col/lum_world); ldr_color = pow(ldr_color, (float4) (1/2.2) ); // Gamma correction So apparently if I leave out the last step of Gamma Correction I feel I get more aesthetically pleasing images. If anybody can confirm if it's working as intended or there's something wrong. Note that I'm using OpenGL to display Images but nowhere am I using GL_FRAMEBUFFER_SRGB so there's no implicit gamma correction being done.
This is gamma corrected (Light intensities are set to 8.0f) 
This is with tonemapping but without gamma correction. Light intensities were scaled to 18.0f. At 8.0f the image was very dark. 
For comparison here is the gamma-corrected image at 18.0f. It's just the whole image got whiter/brighter.
We can see that Gamma corrected one looks washed out, shadows are much much lighter and the back wall looks outright bad. I don't know what to call it but the GI in the un-corrected image looks better.
