[Gimp-developer] GIMP 2.9 useability - out of gamut and HDR channel values

An issue that will arise for everyone who uses GIMP 2.9 is how to deal with HDR and out of gamut colors.

An HDR color is any floating point color with at least one RGB channel value that is greater than 1.0.

An out of gamut ("OOG") color is any color with at least one RGB channel value that is less than 0.0.

It is very easy to generate OOG/HDR colors using GIMP 2.9. Ways to generate such colors already include:

* Levels slider adjustments.
* Converting images from one RGB color space to another.
* The LCH blend modes.
* Apparently some GEGL operations also generate such colors.

New ways to generate OOG/HDR colors will eventually be added to GIMP, for example the addition/subtract/multiply/divde/etc blend modes will need to be unclipped if GIMP is ever to accomodate high dynamic range scene-referred editing.

On the one hand, allowing OOG/HDR colors makes possible many editing opportunities that are not possible when all RGB values are clipped to the range 0.0-1.0. For example (and putting HDR editing to one side), for display-referred editing: * The fact that Levels doesn't clip RGB values makes it possible to make extreme adjustments to raise shadows and then selectively mask out highlights to bring them back below 1.0. This is a lot more useful than it might sound. * The ability to let stand any OOG colors created by LCH blend modes or by ICC profile conversions allows to deal with these colors at a later point in the processing pipeline rather than have them be summarily clipped.

On the other hand, many times OOG/HDR colors will interfere with the user's efforts to edit images, being inconsistent with many display-referred editing operations. And OOG colors generate nonsense values when used in many editing operations, whether HDR or display-referred.

Right now the only way the user has available to clip OOG/HDR channel values is either to change the precision to one of the integer precisions, which will clip all OOG/HDR values in the entire layer stack, or else to apply a "straight line" null Curves adjustement to an individual layer that has OOG/HDR channel values. These are blunt and cumbersome ways to deal with something that every GIMP user will eventually have to come to terms with.

Ways need to be provided to allow the user better control over whether and when OOG and HDR colors should or shouldn't be clipped. Here are some suggestions for consideration:

1. LCMS 2.7 does provide the option for floating point ICC profile conversions to be clipped or not clipped. Currently GIMP only supports unclipped conversions. It would be nice to add the option to allow the user to choose to do a clipped ICC profile conversion.

2. An option could be added to the Preferences dialog to allow the user to choose to automatically clip the OOG and HDR results of all editing operations. For many users this will be a true useability enhancement as many users simply won't want to deal with OOG and HDR colors.

3. An option could be added to every layer and editing operation to do one of three things: i. not clip the RGB values; ii. clip just the negative RGB values; iii. clip all OOG/HDR colors.

For all three possible ways to help users deal with OOG/HDR colors, probably the default option should be "clip all".

Adding options to enable the user to control clipping will complicate the User Interface. But if GIMP provide users with enhanced, cutting edge, high end editing capabilities, GIMP also needs to provide users with similarly powerful controls.


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]