Compare and contrast: Filmic RGB vs AgX

I will start a topic for this, I feel like jumping in to the AgX dev topic would be littering.

I’d also note I read through the docs here and anyone reading this might want to do so as well for some extra context.

So yeah, this new alternative tone mapper is coming and everyone is excited. I’d like to have a discussion on how it compares to something we all already know: Filmic. So…

  • how do they compare in what they are trying to achieve (in the context of the understanding that they serve the same purpose, tone mapping and a transition from scene referred to display referred)
  • how do they compare in the way they achieve this
  • conceptually, how can we expect the results of agx to differ from filmic. Would be extra nice if this was described both for color and black and white, or well, luma and chroma if you like.

(just an aside… reading the docs, this will be a beast. Reads like a piece of software on itself rather than just a module in darktable. Might be a good thing, I have a relatively high tolerance to complexity if it leads to better control. Finally: to all devs contributing to this, mostly @kofa I believe: thank you for your effort!)

5 Likes

This is a slightly edited and expanded version of what I have posted on Reddit.

agx provides more control over the tone curve than filmic rgb and sigmoid do, and provides more control over the colour adjustments (primaries) than sigmoid does. So you get filmic-like explicit exposure white and black points (sigmoid uses a curve that is never guaranteed to reach black and white), nice, gradually desaturated colours (you can disable it if you want, and just use the module as a parametric tone curve, but that’s disabling the ‘AgX’ part, which is not about the curve but the colours). In addition to the filmic-like pickers (white and black point + for both), there’s one to select the area where you want most contrast (the ‘pivot’ – by default, 18% mid-grey). You can also adjust the output for the selected pivot.

In filmic, among the advanced settings, you can enable use custom mid-gray values, and then you get a slider on the scene tab that allows you to move the pivot point that gets mapped to mid-grey (in the output) lower or higher on the (input) exposure scale.
In agx, you can also adjust to what value that point is mapped (so the associated output value is not necessarily mid-grey). You have complete freedom is selecting the point of highest contrast, and can make brightness adjustments without modifying the black and white points.

agx does not provide anything that would be similar to filmic’s reconstruct tab.

It provides explicit control over toe and shoulder behaviour (shadow and highlight contrast):

The curve in agx will never over- or undershoot like filmic’s:

However, it may resort to a toe that bends downwards and/or a shoulder that bends upwards:

Different maths, different curves, different compromises.

However, AgX is not about the curve. It’s about the colour, achieved via the manipulation of primaries of a custom processing colour space.

filmic rgb has various processing modes (see the color science setting). agx does not try to match what those do: it tries to match what the original AgX in Blender does, but with almost all parameters configurable, instead of baked-in (it is my understanding that will change in Blender, as @Eary_Chow is working on a parameterised tool). You can use it without the core feature (disabling the primaries), and setting preserve hue to 100%, to get something more like filmic – but if you want to get what filmic provides, just use filmic. :slight_smile: I often used filmic with highlights saturation mix set to low values, which lead to desaturated, to me at least, more natural-looking highlights.

The colour processing in agx is similar to (but more flexible) and based on (as in: uses the same code as) sigmoid’s colour tweaks with the primaries. The code comes from the work @flannelhead did for the rgb primaries and sigmoid modules.

In particular, filmic rgb tries to preserve hue. However, in human perception, hues shift with brightness. This causes the pink sunsets and fires for which filmic rgb has often been critised. Aurélien, the module’s author, wrote (he’s replaced ‘darktable’ with ‘Ansel’, the name of his fork, but the same holds for darktable, too):

Note that the Bezold-Brücke shift affects human perception but not sensor measurements, therefore the digital rendition from Ansel 2023 honours the chromaticity coordinates of the spectral colors (red) and will look less yellow than expected by an human observer. This can be selectively fixed by color balancing highlights. (Engineering | Filmic, darktable and the quest of the HDR tone mapping – or, if unavailable, Engineering | Filmic, darktable and the quest of the HDR tone mapping)

AgX tries to produce desaturation and colour shifts that look natural, without having to adjust them in other tools. You can reduce/prevent colour shifts using preserve hue (as in sigmoid).

Finally, agx provides a few display-referred controls (the look tools) for small, quick post-processing adjustments.

25 Likes

Thanks for the nice summary @kofa . As a novice to AGX I am finding it more user friendly than filmic for what that’s worth. And possibly more flexible than Sigmoid. I still like how sigmoid gives nice results out the box for most of my images, but I am adapting my workflow to agx very successfully. You have done excellent work here. the agx module feels like it gives me the best or easiest control with wide dynamic range images where the highlights are nearly blown the shadows are pits of darkness. But I am still a novice with this new module and each day my confidence grows with it.

3 Likes

Try editing this with various tone mappers.
To keep the comparison fair, I’d recommend using the same exposure ranges in filmic rgb and agx, e.g. filmic’s default -8 EV to 4 EV or agx’s default of -10 EV to 6.5 EV. Observe how the colours behave and how the brightest parts of the image transition into white. Play with the various options. I know that normally we’re not editing test charts, but this reveals the differences in colour handling quite clearly.

Sweep_sRGB_Linear_Half_Zip.exr (74.8 KB)

3 Likes

I have a starting style developed for my camera based on sigmoid which gives a good starting point. I now often apply this to an image and take a snapshot. I then clear history and work with agx. I have created a couple of styles based on agx. Currently agx is my go to for most images. The saturation slider is very important to get the look I want and I use auto levels a lot to set my whites and blacks. agx provides more flexibility than sigmoid. However, I abandoned filmic long ago as sigmoid just worked out of the box for me. Agx seems a real game changer for me and may replace sigmoid for most of my editing. I agree is worth comparing tone mappers.

3 Likes

@kofa has created a detailed list of the various processing steps that takes place within the AgX module: Blender AgX in darktable (proof of concept) - #2147 by kofa

Is there anything similar available for filmic rgb somewhere?