Achieving colored bloom or halation in Darktable?

Hi all,

I have recently tried to come up with a way to achieve a colored bloom effect in Darktable (where the bloom (or halation) around the highlights has a different color than the lights themselves), but have failed so far (tried the usual suspects like the Bloom module or Lowpass).

Any idea?

You don’t mention the darktable version you are using. If I’m assuming you are a normal user using the latest stable (3.6) you need to wait a bit until the next stable version arrives, if you are using the development version (3.7) you can experiment with the following:

  • The bloom functionality in the diffuse and sharpen module in combination with a parametric mask,
  • A new copy of the color calibration module that uses the previous generated parametric mask (using the raster mask functionality) to add some red/orange-red to the bloomed area to simulate the halation effect seen in (classic) film.

You might be able to use the masking+color calibration part of the above in combination with the bloom or lowpass module if you are using dt 3.6.

Thank you very much for the prompt reply. That sounds good and makes me want to download and experiment with the upcoming version 3.7 (currently using 3.6).

As to your last suggestion: Not sure, if I understand, what you mean. How would I “combine” the bloom or lowpass modules with any of the color adjustment modules?

Basically the same way as using diffuse and sharpen and color calibration together as described earlier.

Not sure how easy it will be to use a parametric mask to limit the effect while using the lowpass module though. Lowpass isn’t all that forgiving and ugliness might be easily created. So I would suggest focusing on the bloom module first.

One other thing: Both the lowpass and bloom modules are above color calibration in the pipeline. Make sure that you move the new color calibration copy above the lowpass or bloom module. If you don’t you won’t be able to use the parametric mask created earlier in bloom/lowpass to limit the effects of the color calibration module.

Ah… very interesting idea, thanks. I have to admit this is the first time I have been using the raster mask functionality. This opens up a whole lot of possibilities. :slight_smile:

Having said that, I’m actually not quite sure how to turn the actual effect of any of the modules into a mask. E.g., in the bloom module I would like the bloom (around the highlights) itself to be used as a mask for the coloring. But having played with the raster mask just now, the best idea that I could come up with is to create a parametric mask in the bloom module, which can then be used as a raster mask in a module later in the pipeline.

I guess, that’s not what you suggested, isn’t it? Because that way I would even make use of the blooming effect at all…

Yes. This to severely limit the effect of the module.

Halation created by film emulsion, for example, is, basically, only seen on the contrasting edges between (overexposed) light and dark areas (ok, also skin…) and creates this classical red/red-orangey “halo”. You need to limit the blooming to those areas. Easier said then done…


Once you have the area isolated and a bloom (pleasing “halo”) applied, you can now colourize it in the next module.

If you want a quick and dirty way to create bloom and halation combo in dt 3.6, you can download my xmp in this Another fairly high contrast scene. Play Raw topic, I’m using regular Bloom module + Colourize with a parametric mask to control the halation radius and intensity, and you can activate it separately.


Thanks a lot. I noticed you used the blend mode addition and the scene-referred RGB mode in combination with a parametric mask in the colorize module - that’s actually a pretty nice trick. I played around a bit more with your idea as a starting point and managed to come up with something that I’m pretty happy with:

  • Choose a halation color in the colorize module (red with maximum saturation in my case) and lower the source mix to 0.
  • Use a parametric mask and set the input slider of the gray channel to whatever works well. I feel, a value around 80 gives mostly good results in different images.
  • Set feathering radius and mask blur to some low values (but not 0); I use 5 for both.
  • Increase the mask opacity.

In the images that I tested this with, this seems to give a pretty good simulation of real halation. But, needless to say, it will always depend on the source material, the exposure etc.

Anyway, thank you very much. Much appreciated!


Glad that it is useful. Yes, I think addition is the most physically accurate blending mode for adding light (at least in 3D and linear compositing). The setting depends on the image and module placement, but the setting you mentioned above is the general starting point.

In my case, the adjustment you could’ve tweak goes like this:

  • Halation hue is red (0°) if the module placed before filmic rgb and colour grading phase, but after colour correction. Other than red if it’s placed before filmic rgb but after colour grading, or at the end of the pipeline (follow/shifted towards the colour grading highlight colour bias).
  • Source mix is zero or low value as default. Set it higher will boost the content inside an overexposed area towards white (useful if you want a flat white overexposed area).
  • blend fulcrum to control the halation colour intensity.
  • Gray channel masking as a threshold, you can use boost factor if you want to target value above white (100). It’s useful depends on the module placement.
  • blurring radius and mask contrast to adjust the halation size. I found that set blurring radius to a low value (under 15px) along with negative mask contrast value works well.
  • feathering radius is set to 3px (I rarely adjust it).

Hope that helps!

Here an example in darktable 3.6 where somebody put fluorescent paint on a stair in delft.

city.surprise.nef.xmp (34.9 KB)

But you may want to have different colors for bloom and highlights? An example would be good.