Something like that would help. Jumping back and forth between AgX sliders reminded me of feverishly flicking between tabs and alternating clicks between “mask exposure compensation” and “mask contrast compensation” in the tone equalizer module — one of my least favorite (UX) parts of darktable.
Not relevant here, but I solved that by assigning a hotkey + mousewheel combo, so E + scroll and C + scroll adjust mask exposure and contrast, respectively.
Another solution is to use the quick access panel.
I seem to have read that the team is currently working on the ergonomics of this module.
Hi, @kofa
Just as a quick reference regarding the colors in new version:
The colors are much more pleasing when the “use inverse matrix” option is enabled.
The greens are no longer so yellowish, blue becomes less cyan and a little darker and red colors a little lighter.
This has a nice effect in portraits and landscape shots.
Thanks for the feedback. The checkbox is part of the experiment; once we have consensus on which matrix is better, I think it would be best to remove it, keeping the preferred matrix and avoid complicating the module (this one, or the enhanced sigmoid, if that’s a possibility).
So I have to say, of all three tone mappers, your AgX version convinces me the most so far. Easy to use, nice saturation and color reproduction.
Also works great in combination with color balance RGB if additional corrections need to be made. And that is very rare with AgX.
I have gone through my many folders and tested it out and am very impressed.
I even thought about making a little episode with a short demonstration.
Maybe let’s wait for the dust to settle a bit
Given how roughly hewn-together the code is, it may take a while to clean up.
What do you think of that hue-preservation/restoration slider? Is it useful? And limiting the offset? (Others, please chime in, too!)
Next, I’ll try to check the ‘guard rail’ that @flannelhead mentioned – and, in fact, invented / implemented. His being ‘somewhat involved in the BA forum AgX thread at a time’, as he put it above, was quite fruitful:
Personally I don’t really find this to be a huge slider load…the sliders move the data in fairly predictable ways and I just watch the waveform. I think using a module like this is where the waveform really shines…you can see the data compress, expand or shift… I could see it becoming second nature pretty quickly
I agree with Boris on the option that I like best gor the matrix… I really noticed it on this image…the green plastic container and a couple of the other green items in the photo change considerably
I have set it to 0 for me, but I would keep it. Sometimes you want to keep the colors as they are, for example with some flowers and the like.
Please, do not limit the sliders!
Rather a schortcut for fine tuning.
I find this limitation already very restrictive with 4ways tab in color balance RGB for luminance sliders. If you exceed the softlimit then the visual impression is distorted and you always have to orientate yourself to the numbers that are difficult to read.
Take a look at how, if you exceed the soft limit, the zero for highlights gain and power is no longer in the middle and the ratios appear distorted:
When that happens, and the tone mapper code is finalized, please consider documenting it in detail. The whole shebang, with equations. If not in the DT repo then somewhere else (I am happy to type LaTeX/Typst for you).
My problem with a lot of DT code that one has to extract the math from the source code. Yes, it is there, but so are a lot of other things which obscure it.
I meant limiting the effect (that’s already in place). The offset no longer shifts up the whole range. See:

I’ve tried to limit the effect of offset (it’s a simple linear decay, full strength at 0, no effect at 1). I’m not sure if this won’t create weird gradient reversals; I’m rather wary of this idea. But you can try it.

The whole shebang, with equations.
Right now, there are not equations. That is what I have been saying all along. The matrix is there, I took it from some Python script, which based it on another. But I’d like to track it down, and have exchanged some messages with @flannelhead, who has been very supportive.

I meant limiting the effect (that’s already in place). The offset no longer shifts up the whole range.
So far, I haven’t noticed anything that should make it necessary to limit offset.
People have been complaining about the interplay between the sliders, so I tried to limit that. Should I undo that in the next build (on the weekend)?
For me, the decision is relatively simple: if the limitation you have in mind limits functionality/flexibility, then I’m against it. If it just makes it easier to use then it makes sense.
I find it super easy to use as it is now. I don’t understand the difficulties. For me, the interaction between the three controls is also logical and they offer the flexibility to set both the contrast level and the contrast focus.
But, if there is a solution that doesn’t limit this functionality, then that’s fine.
The question is:
- is it easier to use now (assuming you have upgraded to yesterday’s build - Blender AgX in darktable (proof of concept) - #112 by kofa), when offset no longer moves highlights
- or was it easier to use before , with the build from Blender AgX in darktable (proof of concept) - #39 by kofa ?
Or the difference is not even noticeable?

is it easier to use now (assuming you have upgraded to yesterday’s build - Blender AgX in darktable (proof of concept) - #112 by kofa), when offset no longer moves highlights
Strange, I have used both and with both versions offset also moves highlights
I don’t see any difference. Or maybe I don’t understand you correctly.
I may have made a mistake. I’ll test later. Thanks for letting me know.

I meant limiting the effect (that’s already in place). The offset no longer shifts up the whole range. See:
Funny I used that aspect in a few images (ie lifted the image substantially) and opposed it with the power and in some cases I could get good results without even using the exposure slider…likely not maybe a text book approach…
Playing with the AgX tonemapper module Two edits … no exposure added … all done in the tonemapper…might not be the best way to always do it and at this point I’m just trying to get a feel for the adjustments… no HQ reprocessing [20250314_0055_02] And with it… [20250314_0055_03]
I did this one without using exposure and your initial version of the module…