Agx terminology (UI)

Here is a new build, and I’ll submit a PR based on this code.

  • The sliders now have visual hints (hue, purity) as discussed;
  • The hue and purity sliders look like in color balance rgb, not like in sigmoid / rgb primaries (there is no white stripe from the neutral position to the selected value, obscuring some of the visual hints)
  • the black/white, toe / shoulder sliders have white/shoulder on the top, black/toe at the bottom:
  • the module will read the exposure parameters if applied for the first time/reset, and make a guesstimate for the white/black point, similar to filmic rgb. Unlike filmic, the actual settings from the exposure module (compensate camera exposure, manually set exposure and the recently introduced compensate highlight preservation). This won’t be done automatically for HDR content (since HDR input can have much brighter highlights than what a sensor could capture, there is no point in imposing exposure limits calculated based on sensor-based heuristics), but you can still use the ‘camera’ icon if you want. The previous method (picking the limits based on image content) also remains:
  • the pivot input (x) coordinate is now determined based on an EV offset from mid-grey, not as a percentage of the distance between mid-grey and black or white relative exposure. To reflect this, the slider has been renamed to pivot relative exposure.

    The consequences:
    • the pivot’s distance from mid-grey remains constant, therefore if exposure limits are adjusted, the projection of the pivot remains the same (the same input levels are mapped to the same output levels as before). Previously, since the output remained unchanged, but the input changed, the mapping changed, and the region of highest contrast moved.
    • the shape of the curve will change, reflecting the movement of the pivot relative to the mid-grey-to-end-of-exposure-range distance.
    • pivot input (x) will still be enforced to stay inside the exposure range; if you shrink that so much that the pivot is forcibly moved (because it would fall outside the exposure limits), then expand the range again, the pivot will not be restored. For example: your black and white relative exposures were -8 EV and +5 EV. You set your pivot at mid-grey +2 EV. Then, you set a very low white exposure limit, like 1.5 EV → the pivot will be forced to 2 EV (minus epsilon). Then, you restore your white relative exposure to 5 EV → the pivot will remain at 2 EV.
    • there are now 2 pivot pickers, since some disliked the idea of the pivot input (x) picker also adjusting the output, since that is done by calculating what the brightness would be if we used the default mid-grey → mid-grey mapping for the pivot. So, the picker next to pivot relative exposure only changes that slider. In order to set both the input and output value (as was done previously), use the new picker, placed next to pivot target output. This may be a bit confusing, at first, but if you think about it, it makes no sense to set the output using a picker without also saying the brightness of what region is to be set to that value. If you ever forget what each picker does, there are tooltips to help:

I hope I did not miss anything.

Note that, because of the parameter change (pivot x as percentage vs EV), the module version number will be updated, and you can’t go back to the previous one. This is a risk if you try the experimental build and the PR does not go through, or is changed in an incompatible way. I think the risk of that is low (there may be changes required how the exposure-based limits work, but that is unrelated to the rest of the changes).

Version info:
The code has been rebased on the current master, and includes all upstream changes up to and including:

commit e0001ac7273b80b644549ad9850331655424cda6
Author: Pascal Obry <pascal@obry.net>
Date:   Sat Nov 1 18:43:28 2025 +0100

    RELEASE_NOTES.md: picker issue due to coeff in colorin.

Branch: GitHub - kofa73/darktable at agx-ui-toe-shoulder-sliders-and-primaries-rotations

PR: Agx UI toe shoulder sliders and primaries rotations by kofa73 · Pull Request #19642 · darktable-org/darktable · GitHub

Linux AppImage:
https://tech.kovacs-telekes.org/dt-agx/Darktable-5.3.0%2B731~gf040bd2dea-x86_64.AppImage

@Dave22152 , @priort , @MStraeten : if you have the time, please provide updated builds.

7 Likes