core/colorpipeline: switch tone mapping to use a modified Reinhart curve
The main advantages over the old curve are that
- at input range = output range, it's entirely linear, and it smoothly becomes more nonlinear with larger input range values. This prevents weird jumps when using the brightness slider
- it never increases brightness over the original value, which in some cases made images look worse than with just clipping, and could make some parts of the brightness slider seem to not affect HDR images
- the curve is no longer split into two parts. The kink in the old curve could (potentially) cause visible artifacts in smooth gradients of the source image
The only downside this has is that this curve generally makes tonemapped content a bit darker, but the improvements are in my opinion worth it.
I put the function together in geogebra, if someone wants to play with the variables and maybe even find an improved iteration: modified_reinhart_2.ggb