Filmic RGB vs in-camera Exposure Compensation

I like to use exposure compensation on my camera to brighten or darken my images.

The Exposure module has a toggle called compensate camera exposure to negate the effect of exposure compensation. Since I use exposure compensation to brighten and darken, I do not need the negation, and have the toggle switched off. This works well.

(I think the toggle should be off by default. I’d venture that most people expect over-exposed shots to be brighter. But that’s not the point of this post.)

However, I noticed that the Filmic module also changes its white/black relative exposure to a different range depending on the exposure compensation. For example, it will set them to -7.25/+5.20 for a -1 EV exposed image, -7.75/+4.40 for a 0 EV image, and -8.25/+3.60 for a +1 EV image in the following example files:

(please add an additional +1 EV in the Exposure module to all three images to counter the camera’s highlight preservation mode)

It seems to me that Filmic expects compensate camera exposure to be switched on, and changes its dynamic range accordingly. For me however, with compensate camera exposure switched off, this just results in an ugly default rendering, and had me quite angry and confused for a while. And that is kind of a shame (although easily remedied with a default preset).

Is this behavior intentional? Shouldn’t there be a compensate camera exposure toggle in Filmic RGB as well as in the Exposure module?

If you use Exposure Compensation in your camera for brightening and darkening your shots like I do, you should (to the best of my understanding):

  • Preset Filmic RGB to a fixed white/black relative exposure to prevent it from changing the rendering.
  • Preset Exposure to toggle off compensate camera exposure.
1 Like

I don’t know how filmic computes the white and black relative exposure. However, there is very good reason for the exposure compensation:
Suppose I’m in a room on a bright day. This is much darker than the outside. There is a window visible in the picture, with the bright view outside.
Now, if I take a picture inside, the camera will most probably expose for the majority of the image, properly exposing the room, but blowing out the window (completely saturating the sensor where the window is projected, losing all details). I can either spot-meter for the window, and later raise the exposure manually, or I can use in-camera exposure compensation to reduce exposure by say 2 or 3 EV. This will keep (some of) the highlights, but underexpose the room.
I import the raw in darktable; the exposure module reverts my manual exposure reduction, exposing the room properly. The window will go very bright, but in filmic I can simply increase the white point to tone it down, and recover highlight detail. (I could do the same / something similar in other raw developers as well.)
If I metered on the window, I can adjust exposure manually.
If this bothers you, turn off the option, and save this to a preset, to be applied automatically to your raw photos.


1 Like

Thank you for your reply. That is a good reason of course.

But my Fuji camera can protect highlights with its “DR” functionality, which means I can use Exposure Compensation creatively instead. Most other cameras offer similar features, I believe.

The “DR” modes in Fuji cameras under-expose by one or two stops, and raise the tone curve to compensate. You get an under-exposed RAW, but a correctly-exposed JPEG with unclipped highlights.

In Darktable, I raise Exposure by one or two stops, and get a correctly-exposed image. I accordingly increase the dynamic range and contrast sliders in Filmic RGB. This procedure works very well.

I find it actually liberating to use Exposure Compensation for changing image brightness. That way, I can expose an image at capture time instead of only in post.

Exposure adjustment is my one most used keyboard shortcut in darktable (I have it assigned as a dynamic shortcut to the letter E), so the starting point doesn’t bother me all that much, since it’s so easy to change.


In theorie yes. But my camera has no exposure for highlights feature and clipping happens easily even with highlight protection active. So I use exposure compensation quite frequently as I don’t want to use spot metering or what ever.

With a dynamic shortcut for exposure you can be creatively in post without losing the headroom of RAW. Or am I wrong?

Yes – though you can alter exposure from any screen even without a dynamic shortcut, simply by scrolling or dragging over the histogram (but with less precision, I think).

Not wrong at all. I just like to do it at capture time if I can. More time in the field, less in front of the computer.

I was skeptical about my camera’s highlight protection feature at first, but after trying it for a while I have grown to trust it. Fujis under-expose half a stop by default anyway, and the additional one stop added by DR Auto is usually enough.

My complaint is that Filmic RGB assumes that Exposure Compensation should always be used “your” way (to ETTR) and not “my” way (brighten/darken). Exposure has a toggle to choose between the two approaches, Filmic RGB doesn’t.

And I think that “my” way should be the default. But I guess everyone thinks that, so that’s not a strong argument.

1 Like

Right, but with Filmic RGB, you’re using the exposure module anyway… so it shouldn’t be a problem where the toggle is, correct?

They do different things. Filmic changes the ratio between highlight DR and shadow DR depending on exposure compensation, while Exposure changes exposure. If one toggle disabled both, that’d be fine. But both effects need to be disabled. Disabling only one is only half the solution.

(Or maybe I’m entirely misunderstanding something?)

Oh, wow. I see what you mean now — how Filmic chooses different values for white and black relative exposures, irrespective of the exposure module setting for exposure compensation.

(I also happen to use an X-T2 and hadn’t noticed this before. Sorry for misunderstanding. :man_facepalming: I guess I hadn’t noticed this before, as I’m not using DR on my Fuji.)

It does seem like filmic probably should automatically adapt to exposure’s setting. I suppose this might be an oversight? I guess file a bug and/or we can ask @anon41087856 here if filmic should take the exposure compensation setting into account as well?

1 Like

Darktable’s pipeline is designed such that modules don’t care about each other, so filmic cannot get the exposure value from the exposure module and just assumes a flat +0.5 EV. It’s a core design problem that doesn’t have a simple solution for now (except redesigning the pipeline… again).

As far as I can tell, Filmic assumes a flat +0.5 EV minus exposure compensation (the in-camera one), right? In the Exposure module, this addition can be disabled. In Filmic, it doesn’t seem to be optional.

@anon41087856, would it be possible to optionally disable the additional compensation for the in-camera exposure compensation? It’s possible in the Exposure module, but not in Filmic. That’s what this thread is about.

Ok, it took me a while to understand what the issue was here.

So, you are correct – Filmic by default will set the white and black points to depend on whatever exposure compensation is saved in the EXIF data in the raw file.

Specifically, it calculates an exposure bias by assuming a 0.5EV boost, minus whatever exposure compensation was dialed into the camera. This is nice if you used the exposure compensation dial on your camera to “expose to the right” to capture as much detail as possible, but it is not so good if you used the exposure compensation dial for artistic effect.

Fortunately, you can deal with this using presets. You can define an auto-apply preset in exposure module to switch off the “compensate camera exposure” option in exposure module, and another “auto-apply” preset in filmic to override the white point and black point adjustments.

Let’s say you set your exposure module to automatically set the “exposure” slider to “+1EV”. Then, in your Filmic preset, you should set your white and black points to be:
WhitePoint = 4 + 0.8 * ( +1EV )
BlackPoint = -8 + 0.5 * ( +1EV )
(substitute whatever default exposure boost you want in place of +1 EV in the brackets)
and since “auto hardness” is set to “on” by default, the output power is taken care of automatically for you. Save the filmic preset so it will auto-apply, and now your filmic module will no longer react to adjustments on the exposure compensation dial of your camera.

Does this address the concern?

Thank you, @Matt_Maguire, for summarizing my concern better than I was able to.

Your suggestion does indeed address my concern. That’s what I’m doing at the moment, thanks to the brainstorming this thread provided, and it works well.

However, I think a new toggle similar to the “compensate camera exposure” in the Exposure module would be a better long-term solution. In particular, it would add some highly visible indication that Filmic responds to exposure bias, which was very much non-obvious to me when I started investigating this topic.

In scene-referred workflow, the default exposure module settings is to correct the exposure bias. That’s also what filmic defaults assume. Filmic is otherwise not auto-enabled if scene-referred workflow is disabled.

Adding more toggles in filmic is no solution. What is lacking is a communication bus between modules, in the pipeline, to make things clean and ditch hardcoded assumptions. But darktable’s design is to enclose modules as black-boxed plugins that don’t speak to each other, which is one of the reasons why its workflow is not great (and did not really make sense at the time where the pipeline couldn’t be re-ordered either…).

But that’s something I have been thinking about for a couple of weeks. We need to find a clean way to share info between modules.


But why? That’s not a necessary precondition for the scene-referred workflow, is it?

In particular, I use my camera’s dynamic range modes to save highlights (the DR modes under-expose by one or two stops), and use the Exposure Bias creatively to brighten or darken. As far as I can tell, this approach does not conflict with the scene-referred workflow, so why bake it into Filmic?

Exposure Bias creatively to brighten or darken.

That’s a bad idea. Exposure bias is meant to slide the scene dynamic range into the sensor dynamic range. Creativity has no place in exposing a raw file, the constraint is to fit a range into another while managing the bounds clipping (in case scene DR > sensor DR, which is all the time if you shoot outdoors) in a way that preserves your subject the best.

Exposure bias is like a microphone gain. You might normalize the recording in post-processing, up to you, but at recording time you only tune it to maximize SNR while avoiding clipping. Nobody ever used a mic gain creatively, unless you want scratches and pops in your master.

If you were driving a car in the tight street of the dynamic range (old-Lisbon comes to mind), SNR would be your left wall, clipping would be your right wall, exposure bias would be your stirring wheel, and you would be minding both walls to fit your car in the middle without scratching the paint. (Hence why I don’t like the “exposure to the right” concept, because you expose a full range).

Scene-referred workflow is exactly about “special numbers have no special meaning”. Everything is fluid, and once in the pipeline, you can anchor whatever source value to whatever target value non-destructively, simply by changing the main exposure, which is actually a proportional scaling (hence color-preserving).

However, we know that most DSLR lightmeters in matrix mode will work in a display-referred fashion and target middle grey to anchor it 2.45 EV below peak value (100%), because peak value is assumed to be reflective white patch at 20% reflectance as per ICC (display-referred) standards. So, in case peak value has to record something brighter than a 20% reflective white patch (like a cloud, a sunset or a light bulb), for dynamic range salvaging purposes, you need to hack the display-referred assumptions and to input an exposure bias, say -2 EV. Then we can assume scene middle gray lies around -4.45 EV (below peak value).

Of course, if you use your highlight-priority lightmeter mode, we have no clue where the camera tries to anchor grey, and we can’t account for each possible camera × setting combination, so you will need to take over defaults manually.


This, in spades. If one really wants to practice ETTR, one needs to be prepared to manually consider their shadow-lifting…

Well, I see that I am clearly in the minority here.

I like to shoot JPEG most of the time, and only actually touch the RAW when I can’t get it right in-camera. To that end, I use Exposure Bias creatively, and leave it to the camera to underexpose automatically if need be. This system works well for me.

When 3.2 was initially introduced, Filmic did not work well for me at all. This discussion thread however has shown me why: because Filmic pre-supposes that Exposure Bias is used to ETTR, which has to be disabled manually if Exposure Bias is used for creative effect. Luckily, this is easily remedied with a custom preset. Thank you all for your help in figuring this out.

I still don’t think it makes sense to have a toggle for “compensate camera exposure” in the Exposure module, but not Filmic. If it makes sense to have ithe toggle in one, it should make just as much sense to have it in the other. Personally, I do consider this a bug; one of the many “paper-cuts” that make Darktable “hard to use”. But whether it is worthy of fixing is not for me to decide.

I am saddened that Filmic and @anon41087856 are apparently not considering my workflow valid. I value both greatly, and would enjoy them to support my workflows better. Oh well, such is life.

So, again, thank you all for your help. I rest my case.

Each darktable module has exactly one coded default behaviour. Filmic default is based on a scene referred workflow and the assumption that the photographer tries to capture maximum dynamic range.
So if your workflow differs you can override the defaults, saved them as preset and let darktable apply these instead.
Your workflow ist valid indeed - but just for your intention which is not focused on an scene referred process. In Cologne you could call a Kölsch a beer, but for a Bavarian this is by no means a valid attribution :wink: