Gamma: Difference between revisions
Jump to navigation
Jump to search
Content added Content deleted
(new page) |
(some extra framebuffer info) |
||
Line 20:
}
</source>
Note, however, that OpenGL may also perform this step for you on any on-screen framebuffers (i.e. the default framebuffer) if you do <tt>glEnable(GL_FRAMEBUFFER_SRGB)</tt>.
== See also ==
* https://blog.johnnovak.net/2016/09/21/what-every-coder-should-know-about-gamma/
* https://stackoverflow.com/questions/23026151/do-i-need-to-gamma-correct-the-final-color-output-on-a-modern-computer-monitor
* https://www.khronos.org/opengl/wiki/Framebuffer#Colorspace
* https://en.wikipedia.org/wiki/Gamma_correction
* https://www.cambridgeincolour.com/tutorials/gamma-correction.htm
|
Revision as of 06:57, 19 December 2019
Quick rules of thumb, since I can never remember which is which:
- RGB = linear space
- sRGB = gamma space
- most image files store sRGB
- sRGB is unfit for blending
The corollary is:
- Image files loaded as textures should be converted from sRGB to RGB (but some decoders do this for you!)
- The shader responsible for putting the final pixels on the screen should have a gamma correction step doing:
const float gamma = 2.2; out vec4 color; void main() { // ... color = pow(color, 1. / gamma); }
Note, however, that OpenGL may also perform this step for you on any on-screen framebuffers (i.e. the default framebuffer) if you do glEnable(GL_FRAMEBUFFER_SRGB).
See also
- https://blog.johnnovak.net/2016/09/21/what-every-coder-should-know-about-gamma/
- https://stackoverflow.com/questions/23026151/do-i-need-to-gamma-correct-the-final-color-output-on-a-modern-computer-monitor
- https://www.khronos.org/opengl/wiki/Framebuffer#Colorspace
- https://en.wikipedia.org/wiki/Gamma_correction
- https://www.cambridgeincolour.com/tutorials/gamma-correction.htm