I am writing a game using SharpDX with DirectX11 and I have been reading that it is important to apply gamma correction to my engine in order to perform correct linear lighting calculations.
So I modified the function which loads my diffuse texture maps so that it uses R8G8B8A8_UNorm_SRgb format rather than R8G8B8A8_UNorm. I then modified my framebuffer format so that it also uses R8G8B8A8_UNorm_SRgb.
It was my understanding that this would use hardware to remove gamma correction from my textures allowing me to perform linear lighting calculations and then reapply gamma correction when rendering the final scene to the frame buffer.
However when I do this the scene looks washed out and too bright. My next step was to take a look at some gamma calibration charts Gamma Calibration Chart. When viewing this chart in my browser I get a value of approximately 2.2.
I then loaded this chart into my engine and rendered it to screen. When using R8G8B8A8_UNorm I get the same value (approximately 2.2) but when using R8G8B8A8_UNorm_SRgb I get a value around 1.2.
It seems like the scene has already been gamma corrected somehow. Is this the case, what am I missing?
_SRGB
formats, since the gamma correction is being done and then undone. \$\endgroup\$