Similarly, most non-AAA game engines ignore the sRGB tone curve and treat all inputs and outputs as if they were linear, which results in unexpected brightness shifts in textures.
Up until very recently, Blender used linear light internally, but output that as sRGB without converting it to the appropriate gamma curve. There's guide after guide online on how to fix Blender by using "filmic" mode, which should be renamed to "not broken" mode.
Same thing as the colour picker in image editors like mspaint or Photoshop. They all have the same rainbow picker that has very visible discontinuities in the colour gradients, like a rippled curtain. It should be smooth, and it is, if using a perception-based colour model instead of linear light output straight to an sRGB monitor without any kind of colour correction.
This kind of thing has been going on for decades, and will continue for decades more. Programming is still a growth industry, so the average developer is inexperienced and doesn't know about these subtleties.
The best way to do that, if you are using shaders, is to have "fragColor.xyz = pow(col,vec3(1./2.2))"* on your last line. If it looks bad, look elsewhere, you are not allowed to touch that last line. The opposite should be done just after reading textures, if they aren't already linear.
*: sRGB actually has a weird transfer function, but it is closely approximated by a gamma of 2.2
Best is to properly declare the target framebuffer as sRGB (if it is) and output linear colors while letting the GPU deal with it.
Second, this will prevent HDR.
Most games render to a linear HDR target surface with a very wide dynamic range, and then will tonemap it to the display gamut as the final step. This was common as far back as Valve's Half Life game. I think even the first one did something along these lines!
This is especially important for modern engines that are used by AAA games. E.g. Unreal engine and all similar engines are commonly used for XBox and Playstation games where the output display is a wide-gamut HDR television, not an SDR sRGB computer monitor.
OKLAB is a perceptual colour space, which is really useful for things like colour-picker tools, image editor controls, web development, CSS styles, etc...
You can use this kind of colour space to make two colours that are equally bright and equally saturated, but exactly 180 degrees apart on the colour wheel. If you use this instead of RGB hex codes, you get much better looking results. It'll make your app or web page "pop" with minimal effort...
[0] http://blog.johnnovak.net/2016/09/21/what-every-coder-should... [1] https://news.ycombinator.com/item?id=27721094
Wrong. Windows's volume output is the percentage squared, and Linux PulseAudio's volume output is the percentage cubed. Nonetheless I would prefer that the volume output was exponential (2^(slider position / constant)). This way, pressing the "volume up" key 3 times always increases the volume by a constant factor, regardless if you're on loud or quiet speaker/headphones. Additionally, on loud headphones, you won't have to fine-tune the volume in the very bottom of the slider (eg. 1 is too quiet, 2 is a bit loud, 3 is painfully loud).
On Windows, I hide the default volume control and instead use Volume2[1] set to exponential mode. On Linux, I haven't found a good solution for getting PulseAudio to use exponential volumes.
Is this due to linear vs logarithmic scaling? Or are people throwing wild parties where the iPad needs to fill a room with sound?
But I do really think a volume one half of the current lowest would be useful for me.
I’ll often use my iPad as a portable media player and max volume is nice for things like music while showering or cooking in the kitchen.
https://learnabout-electronics.org/Resistors/resistors_09a.p...