Thanks for your reply @donmccurdy . I made you a chart to show you the differences between gammOutput turned on and off. [see pdf in the attachment]
It’s a pretty basic scene. There are no lights, no post-processing and no textures. I only use vertexcolors in a MeshBasicMaterial on the vertices you see with a label. No lights that can influence the colors. No shadows, no transparancies, no reflections.
Thanks for posting the link to another talk about this on github. I just read it and also read some other threads/issues on github about it. It looks like it’s going the right direction, can’t wait for it to be in there. ONce you know about color spaces and gamma correction it is important to take it seriously. I don’t really understand why threejs should still be ‘backwards compatible’ with that strange 2.0 gamma value that we’d normally never use and is rather confusing and making people set the wrong value without even knowing it, while there are other things changing in threejs updates that are far more breaking code, but hey; we can set it manually and that’s fine with me
To be able to chose a color space on the renderer would be a great solution though!. The gamma factor is always bound to a color space, so just chosing a color space should be the way to go. Although we’d use sRGB always still for years to come I guess, 'cause most browsers only work with sRGB at the moment (or have other color spaces disabled in their settings). But very nice still if we could just set it to sRGB (or adobeRGB for a few) and perhaps make that use the sRGB features on webGL (I’m not that into the core of webGL, but I read there are some build in features to convert gamma and stuff).
The thing I can’t find is if it’s posible to set the sRGB space on the output. I read about renderer.encoding, but that didn’t make it to the build yet I believe and only works on textures right now?
I also applied an own gamma transfer function, but because I’m working with vertexcolors only on the primaries and the secundary colors, black and white, they all have ones (1) or zeros (0) in their r, g and b-channels, zo a power function doesn’t do anything when converting the colors to gamma space than. I always use threejs and I’m not very familiar with the WebGL core, but applying the gamma-correction just to the primaries that create the gradients doesn’t work and isn’t the right way to do it obviously. There should be a transfer function for each pixel, zo perhaps I end up creating a postprocessing shader to do so, but I’d rather not.
Anyway, here’s the chart. I added comments to it:
gamma-comparison-threejs.pdf (328.7 KB)