* New experimental tone mapper The new tone mapper proposed in this change replaces Uchimura (see below) and is composed of two distinct algorithms: - The first is the customizable compression curve from Timothy Lotte (from GDC 2015). The curve's default parameters were chosen to match the overall appearance (contrast) of the ACES curves used as our current default tone mapper. This was done to provide a good migration path to making this new solution the default in a future version of Filament. The compression curve can be customized via its contrast, shoulder, input middle gray, output middle gray, and maximum "HDR value" (scene referred). It is important to note that the compression is only applied to the luminance of the input scene referred value. - The second is a novel approach by Troy Sobotka called Exposure Value Invariant Luminance Scaling (or EVILS). This solution works on the largest chromatic channel of the input value as opposed to mapping all RGB channels as we do in our other tone mappers. The algorithm effectively scales all channel by a ratio that depends on both the compressed luminance from the first stage and the luminance of input value normalized by the largest channel. This new solution offers important benefits as it manages to preserve chromaticity for high input values. It is also designed to provide a desirable rolloff to white on overexposure. This means that even without gamut mapping, this solution avoids many hue skews (red to orange, blue to purple, etc.). The results provided by this solution are much more natural and make using other color grading tools much easier. * Use std::pow instead of pow * Fix Web builds
47 KiB
47 KiB