WIP : HDR Rendering
As a part of task to make a physically based rendering pipeline I am working on HDR rendering nowadays. The motivation behind HDR rendering is that normal RenderTargets and the display devices have R8G8B8A8 format and we can only use individual colors from 0.0f – 1.0f floating point range which is very limited specially if you want to model real work lighting & shading because values easily go past 1.0f and we need more precision more bits per channel. So we use one of the HDR rendet targets R16G16b16A16 , etc. But display devices still can only display 8 bits per channel so we have to map those 16bit per channel back to 8 bit per channel for which we use ToneMapping.
Normally the term HDR rendering is referred to a group of effects including rendering things to HDR render target, Tone-mapping, Bloom, Eye Adaptation, etc. And I have finished my first basic implementation including couple of those effects using pixel shaders . I am sing R16G16B16A16 render target. For luminance I am averaging scene luminance by downscaling the scene luminance render target and then using Erik Reinhard’s method for Tone-mapping. Also implemented a bright-pass filter followed by Gaussian blur for Bloom.
So this is first very naive implementation. There are some bugs, I am working on itand also some more experiments with some different techniques. I am also thinking to try it using compute shader.
Here’s a Scene Rendered to HDR render target –
And after final pass with Tone-mapping –
And here are the views of 3 different areas keeping all settings same and also shown all the passes that are combined to produce the final image ( check how the floor shade changes depending on the total illumination of the scene ). –