darktable page lede image
darktable page lede image

3.4.2. Tone group

This group contains modules that operate on the tonal values of an image, modulating brightness while leaving color values intact. Fill light

This module allows local modification of the exposure based on pixel lightness.

Pushes exposure by increasing lightness with a Gaussian curve of a specified width, centered on a given lightness.


Sets fill-light exposure in [EV].


Sets the median lightness impacted by the fill-light. A color picker is activated by pressing . It shows the picked lightness value in the gradient bar, which helps find the desired center value. You can switch between point and area sampling mode from within the global color picker panel (see Section 3.3.6, “Global color picker”).


Sets the width of the Gaussian curve. This number is expressed in zones, with the whole dynamic range being 10 zones. As the Gaussian curve is symmetric, only even numbers can be entered. Levels

A tool for adjusting black, white, and mid-gray points. This module is especially useful if the histogram of an image does not span the whole horizontal range, from pure black to pure white.

The levels tool offers two modes of operation: manual and automatic.

In manual mode the levels tool shows a histogram of the image, and displays three bars with handles. Dragging the handles modifies the tones in the image. Those bars control the black, middle gray and white points in absolute values of image lightness (the L value from Lab).

You can move the black and white bars to match the left and right borders of the histogram, which will make the output image span the full available tonal range. A previously flat looking image will get more contrast and pop.

Moving the middle bar will modify the middle gray tones. Shifting it left will make the image look brighter, shifting it right will make it darker. This is often referred to as a change of image gamma.

There are three color pickers in black, gray, and white, available by pressing the respectively colored icon. You can use them to sample the corresponding level directly from the image. You can switch between point and area sampling mode from within the global color picker panel (see Section 3.3.6, “Global color picker”).

The auto button autoadjusts the black and white point and puts the gray point exactly in the mean between them.

In automatic mode the module automatically analyses the histogram of the image, detects the left and right histogram borders, and lets you define the black point, the gray point and the white point in terms of percentiles relative to these borders.

Tip: Under certain conditions, especially highly saturated blue light sources in the frame, the levels module may produce black pixel artifacts. See the gamut clipping option (Section, “Input color profile”) on how to mitigate this issue.


Set the mode of operation of this module. Defaults to manual.


Sets the black point in percentiles relative to the left border of the histogram (only automatic mode).


Sets the gray point in percentiles relative to the left and right borders of the histogram after having applied the black point and white point corrections (only automatic mode).


Sets the white point in percentiles relative to the right border of the histogram (only automatic mode). Tone curve

This module is a classic digital photography tool. darktable's tone curve can work in three different color spaces: RGB, XYZ or Lab.

In its default state, curves will be straight lines, defined by few anchor nodes. You can move the nodes to modify the curve. You can generate new nodes by clicking on the curve. With Ctrl+click you generate a new node at the x-location of the mouse pointer and the corresponding y-location of the current curve – this adds a node without risking to accidentally modify the curve. Up to 20 nodes per curve can be defined. To remove a node, move it out of the widget area.

A color picker is activated by pressing and will show the picked values in the graph. You can switch between point and area sampling mode from within the global color picker panel (see Section 3.3.6, “Global color picker”). Numerical Lab values of input and output (see below) at the selected spot or area are shown on top left of the widget.

color spaces

Depending on the desired intent, you can apply the tone curve in three different color spaces:

  • Lab, linked channels,

  • Lab, separated channels,

  • XYZ, linked channels,

  • RGB, linked channels.

Lab is a perceptual color space that is designed to approximate the way human beings perceive colors and lightness, and representing the color information independently of the the lightness information. In Lab, separated channels, you get a fully independent control over the chrominance (a/b-channels) and the luminance (L-channel). In Lab, linked channels, only the luminance (L-channel) control is available. The color saturation correction will be automatically computed, for each pixel, from the contrast correction applied to the luminance channel. This works better in cases where a subtle contrast correction is applied, but gives increasingly inaccurate saturation correction as the contrast gets more dramatically enhanced.

XYZ is a linear technical color space designed to link the physiologic light response of human eyes to RGB spaces. As Lab, it separates the lightness from the color information, but it does so in a way that does not account for the role of the brain correction in human perception. The XYZ, linked channels, mode offers an alternative for Lab, linked channels. It works by applying the L-channel curve to all three channels in the XYZ color space. Look at blend mode coloradjustment if you want to tune the strength of automatic chroma scaling (see Section, “Blending operators”). This mode is known to produce a slight hue shift towards yellow.

RGB spaces are linear color spaces designed to capture and display images in additive synthesis. They are related to capture and display media and do not isolate color and lightness information. The RGB, linked channels, works in ProPhoto RGB and applies the L-channel curve to all three channels in the RGB color space. Adding contrast in RGB space is known to desaturate highlights and boost saturation in lowlights, but this has proven to be the most reliable way to edit contrast, and is the standard way to do it in most software. This mode makes the tone curve module behave the same way as the basecurve (see Section, “Base curve”), except the latter one works in camera RGB space.

Notice that the interface is controlled in Lab in all cases. This means that the middle gray coordinate is always 50% in the graph, no matter what color space is used. The same applies to the inset histogram displayed in the background of the curve. The controls are converted to the relevant color space before the corrections are applied – in RGB and XYZ, the middle-gray is therefore remapped from 50% to 18%.

L-channel curve

The tone curve in L-channel works on Lightness. For a better overview a lightness histogram is displayed in the diagram. When working in Lab, linked channels, RGB, linked channels or XYZ, linked channels, the L-channel curve is the only one available.

The horizontal line represents the input image pixels' lightness. The vertical line represents the lightness of the output image pixels. A straight line does not change anything. A point above the default diagonal increases the lightness, whereas a point under decreases it. Shifting the center of the curve upwards will lighten the image, shifting it downwards will darken the image. An S-like curve will enhance the contrast of the image.

a/b-channel curves

The curves in the a and b channels work on color values and are available only in Lab, separated channels color space. The horizontal line represents the color channel value of the input image pixels. The vertical line represents the color channel value of the output image pixels. Positive a-values correspond to more magenta colors; negative a-values correspond to more greenish colors. Positive b-values correspond to more yellowish colors; negative b-values correspond to more blueish colors.

A straight line does not change anything. Shifting the center of the curve will give the image a color tint: shifting a-channel upwards gives a magenta tint; shifting b-channel upwards gives a yellow tint; shifting a-channel downwards gives a green tint; shifting b-channel downwards gives a blue tint.

Increasing/decreasing the steepness of the curves, without shifting its center, will increase/decrease the color saturation of the respective channel. With properly defined curves you can exert fine control on color saturation, depending on the input pixel's colors.

interpolation method

The interpolation is the process by which a continuous curve is derived from a few punctual nodes. As this process is never perfect, several methods are offered that can alleviate the potential issues you may encounter with some nodes setups.

Arguably, the most visually pleasing method is the cubic spline. Since it gives smooth curves, the contrast in the image is better enhanced. However, this method is very sensitive to the nodes position, and can produce cusps and oscillations when the nodes are too close to each other, or when there are too many of them. This method works best when there are only 4 to 5 nodes, evenly spaced.

The centripetal spline is a method designed specifically to avoid cusps and oscillations, but as a drawback it will follow the nodes more loosely. It is very robust, no matter the number of nodes and their spacing, but will produce a more faded and dull contrast.

The monotonic spline is a method designed specifically to give a monotonic interpolation, meaning that there will be none of the oscillations the cubic spline may produce. This method is very suitable when you try to build an analytical function from a node interpolation (for example: exponential, logarithm, power, etc.). Such functions are provided as presets. It is a good trade-off between the two aforementioned methods.


The scale allows you to distort the graph display so that certain graphical properties emerge to help you draw meaningful curves. Notice that the scaling option only affects the curve display, not the actual parameters.

By default, the linear scale is used. This scale uses evenly spaced abscissa and ordinates axes.

The log scale will compress the high values and dilate the low values, on both the abcissa and the axis of ordinates, so that the nodes in lowlights get more space on the graph and can be controlled more clearly.

When using the logarithmic scale, a base of the logarithm slider appears that lets you control the amount of compression/dilatation operated by the scale. If you draw purely exponential or logarithmic functions from identity lines, setting this values defines the base of such functions.


Original image
Tone curve settings. Please note how the center node of our b-curve was shifted down to negative values. This gives the image its blue tint.
Resulting image Zone system

This module is another way to change the lightness of your image, based on Ansel Adams' system. It allows modification of a zone's lightness taking into account the effect on the adjacent zones. It divides the lightness range into a user-defined number of zones.

Following the concept of Ansel Adams the lightness (based on the L channel from Lab) is divided into a number of zones ranging from pure black to pure white. These zones are displayed in a zonebar. The number of zones can be changed by mouse-scrolling on that bar (defaults to 10 zones).

The zonebar is split horizontally with the upper part showing the zones of the module's output and the lower part the according zones of the module's input. In its default state both parts are fully aligned. While the output zones are static you can left click and drag a control point in the input zones to modify the zonemapping. Shifting a control point proportionally expands the zones on one side and compresses the zones on the other side. Any already existing control point stays in place, effectively preventing changes to the zones beyond. Use right click to remove a control point.

The preview shows the image broken down in zones. When hovering above a zone on the zonebar, that zone – either from input or output – is highlighted on the preview.


The original image.
Here, the darker and lighter zones were compressed to increase contrast, then the upper parts of darker zones were expanded to increase their visual impact. Local contrast

This module allows enhancing local contrast. It supports two modes of operation: the default one uses a local laplacian filter, the other one uses the unnormalized bilateral filter. Both work exclusively on the L channel from Lab.

Local contrast boosts details of your image, much like the equalizer does (see Section, “Equalizer”). However, it is easier to use as it does not require you to work on different frequency bands. The local laplacian filter has been designed to be very robust against unwanted halo effects and gradient reversals along edges.


Choice of "local laplacian filter" or "unnormalised bilateral grid". The options for the bilateral grid are: coarseness, contrast, and detail. The local laplacian filter supports: detail, highlights, shadows, and midtone range. The local laplacian mode supports shadow lifting and highlight compression, similar to the shadows and highlights module.

Bilateral grid

Make the details you want to adjust finer or coarser.


How strongly the algorithm distinguishes between brightness levels. Increasing the value results in a more contrasty look.


Add or remove detail. Higher values will increase local contrast.

Local laplacian

To understand the parameters of the local laplacian filter, you can think of it as applying a curve to the image, similar to this picture:

It will then be applied to the image in a way that works locally and avoids halo artifacts.


Add or remove detail. Higher values will increase local contrast. This will insert an S shaped element in the center of the curve, to increase or decrease local contrast. For monochrome images it is often possible to push this parameter to extreme settings without ridiculous results or artifacts.


This affects one end of the curve, effectively increasing or compressing contrast in the highlights. A low value will pull the highlights down.


Similar to the highlights parameter, this affects the other far end of the curve, and will increase or decrease contrast in the shadows. A higher value gives more contrast in the shadows. A lower value will lift the shadows and can effectively simulate a fill light. Note that this is done via local manipulation of the image, however: this means that a completely dark image cannot be brightened this way, only dark things in front of bright things will be affected.

midtone range

This controls the extent of the S shaped part of the contrast curve. A larger value will make the S wider, and thus classify more values to be midtone range and fewer values to belong to the highlights and shadows part. In more high dynamic range settings it can be useful to reduce this value to achieve stronger range compression by lowering the contrast in the highlights and the shadows. Note however that for really strong HDR scenarios this may work best in combination with a base curve which pre-compresses the range, maybe with an approximately logarithmic base curve. Also the exposure fusion feature in the base curve module may lead to more pleasing results at times, but is more prone to producing halo effects.

This setting can cause banding artifacts in the image if pushed to extreme values. This is due to the way darktable computes the fast approximation of the local laplacian filter.

After, a little overdone to demonstrate the effect. Use this sparingly, to avoid a cheap, overprocessed look. Tonemapping

This module compresses the tonal range of HDR images, so they fit into the limits of a normal, low dynamic range image, using Durand's 2002 algorithm. darktable can import HDR images if they come in OpenEXR, RGBE or PFM format or as a DNG generated by darktable's HDR creation mechanism (see Section 2.3.7, “Selected image(s)”).

The underlying algorithm uses a bilateral filter to decompose an image into a coarse base layer and a detail layer. The contrast of the base layer is compressed, while the detail layer is preserved, then both layers are re-combined.

contrast compression

Sets the contrast compression level of the base layer. A higher compression will make the image fit a lower dynamic range.

spatial extent

Sets the spatial extent of the bilateral filter. Lower values cause the contrast compression to have stronger effects on image details. Global tonemap

This module implements another approach to compressing the tonal range of an HDR image into the limited tonal range of a typical LDR output file. It offers several implementations of global tonemap operators.

Global tonemapping processes each pixel of an HDR image, without taking the local surrounding into account. This is generally faster than local tonemapping, as implemented in the tonemapping module but might lead to less convincing results with very high dynamic scenes. As an enhancement to the original operators, darktable can preserve detail of the input image, and transfer it back to the output image.


Reinhard, Filmic and Drago global tonemap operators are available for use. Depending on the selected operator, different parameters can be adjusted. Some operators are fully self-adjusting, and do not require specific controls.


Only offered for the Drago operator. This parameter influences the contrast of the output image. It is an essential parameter for adjusting the compression of high values and the visibility of details in dark areas. According to the original paper, a value of 0.85 is recommended as a starting point.


Only offered for the Drago operator. This is a scale factor to adjust the global image brightness to the brightness of the intended display. It is measured in cd/m 2 , and should match the according value of your output device. Higher values lead to a brighter image, while lower values lead to a darker image.


Offered as an addition to all operators. This parameter controls how much detail is preserved and transferred back into the output image after tonemapping. Filmic rgb


This module compresses the tonal range of an image by reproducing the tone and color response of classic film. Doing so, it protects the colors and the contrast in mid-tones, recovers the shadows, and compresses bright highlights. It is very suitable in portrait photography, especially in back-lighting situations, but needs extra care when details need to be preserved in highlights (e.g. clouds).

The module is derived from the same named module in Blender 3D modeller by T. J. Sobotka. While it is primarily intended to recover high-dynamic range from raw sensor data, it can be used with any image in replacement of the base curve module. The developer provided a detailed explanation of the module in a video called Filmic RGB: remap any dynamic range in darktable 3.0.

Filmic rgb is the successor of the filmic module provided in darktable 2.6.x. While the underlying principles did not change much, users of the previous version should not expect a 1:1 translation of their workflow, and may find the section called “Filmic rgb for Darktable 2.6 filmic users” useful.


In order to get the best out of filmic rgb, images need some preparation:

  • In-camera, expose the shot to the right. This implies under exposing the shot so that the highlights are at the right of the histogram, just on the verge of clipping, but not clipped. It does not matter if the picture preview is very dark on your camera screen: as long as highlights are unclipped, filmic rgb should be able to recover details from the raw data. Beware that clipped data are not recoverable. Some cameras have a clipping alert preview to help you diagnose this, and some even have an highlight-priority exposure mode.

  • In the exposure module, push the exposure until the midtones are clear enough. Do not worry about losing the highlights: they will be recovered as part of the filmic rgb processing. However, it is important to avoid negative pixels in black areas: the computations done by filmic rgb will result in unpredictable results in this case. For some cameras models (Canon, mainly), rawspeed (the raw decoding library of darktable), may set an exaggerated black level, resulting in crushed blacks and negative values. If so, brighten the blacks by setting a negative black level value in the exposure module.

  • If you plan on using filmic rgb's auto-tuners, use the white balance module first to correct any color casts and get neutral colors. In RGB color spaces, luminance and chrominance are linked, and filmic rgb's luminance detection relies on accurate measures of both. If your picture is very noisy, add an initial step of denoising to help the black exposure readings, and use a high quality demosaicing.

  • If you plan on using filmic rgb's chrominance preservation mode, avoid using any tone mapping module as well as the base curve module. These may produce unpredictable color shifts that would make the chrominance preservation useless. Neither of these modules is usually needed if you use filmic rgb.


The filmic rgb module aims at mapping the photographed scene (RAW image) dynamic range to the (smaller) display dynamic range. This mapping is defined in three steps, each handled in a separate tab in the interface:

  • The scene tab contains the input settings of the scene: what constitutes middle grey, white and black in the photographed scene.

  • The look tab contains the parameters of the mapping applied to the input parameters defined in the scene tab. Notably, this part of the module applies an S-shaped parametric curve to enhance the contrast and remap the grey value to the middle grey of the display. This is similar to what the base curve or tone curve modules do.

  • The display tab defined the output settings to map the transformed image to the display. In typical use cases, this tab should only be used very rarely.

The sliders' ranges of filmic rgb are limited to usual and safe values, but values are allowed out of these ranges by clicking on the sliders with the right button and inputting values on the keyboard. Filmic rgb has no neutral parameters resulting in a no-operation: as soon as the module is enabled, the image is always at least slightly affected.

The curves at the top of the module are read-only and serve as a guide for the operations performed on the sliders. The bright curve is the tone mapping curve, where the abscissa represents the scene exposure, and the ordinate represents the display exposure. The dark curve is the desaturation curve, representing the percentage of saturation as function of the scene exposure.

Middle-grey luminance (Scene tab)

The middle-grey luminance is the luminance in RGB space of the scene referred 18% grey. Its color picker tool reads the average luminance over the drawn area. If you happen to have a grey card or a color chart (IT8 chart or colorchecker) shot in the scene lighting conditions, then the grey color picker tool can be used to quickly sample the luminance of the grey patch on the picture. In other situations, the color picker can be used to sample the average luminance of the subject.

This setting has an effect on the picture that is analogous to a lightness correction. Values close to 100% do not compress the highlights but fail to recover shadows. Values close to 0% recover greatly the shadows but compress the highlights more harshly and result in local-contrast losses. The standard middle-grey value for linearly encoded camera RGB is 18%. Good values of grey are usually the average luminance of the whole picture or of the subject. In studio and indoors (low dynamic range scenes), proper grey values are found between 15-18%. In high dynamic range scenes (landscapes, back-lit portraits), proper grey values lie between 1.25 and 9%.

When modifying the middle-grey luminance, the white and black exposures are automatically slid accordingly, to preserve the dynamic range from clipping and to help you set the right parameter faster. If you are not happy with the auto adjustment performed by the grey slider, you can correct again the white and black exposure parameters afterwards.

White relative exposure (Scene tab)

The white relative exposure is the number of stops (EV) between pure white and the middle grey. It is the right bound of the dynamic range. It should be adjusted to avoid highlight clipping. The white exposure color picker tool reads the maximum luminance in RGB space over the drawn area, assumes it is pure white, and sets the white exposure parameter to remap the reading to 100% luminance.

When the grey is set at 18%, the white exposure will always be around 2.45EV. When the grey is set at 100%, the white exposure should be set at 0EV.

Black relative exposure (Scene tab)

The black relative exposure is the number of stops (EV) between pure black and the middle grey. It is the left bound of the dynamic range. The black exposure color-picker tool reads the minimum luminance in RGB space over the drawn area, assumes it is pure black, and sets the black exposure parameter to remap the minimum reading to 0% luminance. The black color picker measurement is very sensitive to noise, and cannot identify if the minimum luminance is pure black (actual data) or just noise. It works better on low ISO pictures and with high quality demosaicing. When the color picker puts the black exposure at -16EV, it is a sign that the measure failed and you need to adjust it manually.

The black relative exposure allows you to choose how far you want to recover lowlights. Contrarily to the white exposure, it is not always possible to completely avoid clipping blacks. Every camera sensor has a maximum physical dynamic range for each ISO value (you can find them measured on DXOmark or DPreview), the software dynamic range in filmic rgb (dynamic range = white exposure - black exposure) should generally not be greater than the physical dynamic range of the sensor (10-14EV in most cases). Note that the dynamic range of the scene can be lower than the camera's one, especially indoors.

Dynamic range scaling and auto-tune (Scene tab)

The auto-tune color picker combines all three color pickers above, and allows to set the grey, white and black exposures all at once, using the average of the drawn region as the grey estimation, the maximum as the white, and the minimum as the black. This gives good results in landscape photography but usually fails for portraits and indoor scenes.

When no true white and no true black are available on the scene, the maximum and minimum RGB values read on the image are not valid assumptions anymore, so the dynamic range scaling symmetrically shrinks or enlarges the detected dynamic range and the current parameters. This works with all color pickers, and adjusts the current values of white and black relative exposures.

Contrast (Look tab)

The filmic rgb S-curve is created from the user parameters, by computing the position of virtual nodes and interpolating them, similarly to the tone curve module (but here, the nodes cannot be moved manually). The filmic rgb S-curve is split into three parts: a middle linear part, and two extremities that transition smoothly from the slope of the middle part to the ends of the exposure range.

The contrast slider controls the slope of the middle part of the curve, as illustrated in the graph display.

The contrast parameter drives the slope of the central part of the curve. The larger the dynamic range is, the greater the contrast should be set. This parameter mostly affects mid-tones.

When the contrast is set to 1, this disables the S-curve.

Latitude (Look tab)

The latitude is the range between the 2 nodes enclosing the central linear portion of the curve, expressed as a percentage of the dynamic range defined in the scene tab (white-relative exposure minus black-relative-exposure). It is the luminance range that is remapped in priority, and it is remapped to the luminance interval defined by the Contrast parameter. It is usually advised to keep the latitude as large as possible, while avoiding clipping. If clipping is observed, you can compensate the effects by either decreasing the latitude, shifting the latitude interval with the shadow/highlights balance parameter, or by decreasing the contrast.

The latitude also defines the range of luminances that is not desaturated at the extremities of the luminance range (see the section called “Extreme luminance saturation (Look tab)”).

Shadows/highlight balance (Look tab)

By default, the latitude is centered in the middle of the dynamic range. If this produces clipping in one part of the other of the curve, the balance parameter allows to slide the latitude along the slopes, towards the shadows or towards the highlights. This allows more room to be given to one extremity of the dynamic range than to the other, if the image properties demand it.

Extreme luminance saturation (Look tab)

The darker curve in the graph of the module shows the desaturation of the extremities of the luminance range (black and white): since black and white do not have a color, they should normally be associated to 0% saturation. The default saturation is set to 100% in the range defined by the latitude, and decreases down to 0% outside of that range. One of the advantages of this operations is that, since color components do not clip at the same rate in the image, desaturating them avoids fringes around the high exposures.

If the bright colors feel too desaturated, you should check that the white-relative exposure setting does not clip the high luminance spots, and if not, increase the extreme luminance saturation parameter.

Preserve chrominance (Look tab)

The preserve chrominance setting indicates how the chrominance should be handled by filmic rgb: either not at all, or using one of the provided three norms.

When applying the S-curve transformation independently on each color, the proportions of the colors get modified, which modifies the properties of the underlying spectrum, and ultimately the chrominance of the image. This is what happens if you choose no in the preserve chrominance parameter. This value may yield seemingly better results than the other values, but it may negatively impact later parts of the pipeline, when it comes to global saturation for example.

The other values of this parameter all work in a similar way. Instead of applying the S-curve to the channels R, G and B independently, filmic rgb uses a norm N, divides all the three components by that norm, and applies the S-curve to N. This way, the relationship between the channels is preserved.

The different values of the preserve chrominance parameter indicate which norm is used (the value used for N):

  • max RGB is the maximum value of the three channels R, G and B. It is the behaviour of the previous version of the filmic module. It tends to darken the blue, especially skies, and to yield halos/fringes, especially if some channels are clipped.

  • luminance Y is a linear combination of the three channels R, G and B. It tends to darkens the reds, and to increase the local contrast in reds.

  • RGB power norm is the sum of the cubes of the three channels R, G, and B, divided by the sum of their squares - that is to say, (R³ + G³ + B³)/(R² + G² + B²). It is usally a good compromise between the max RGB and the luminance Y values.

There is no "right" choice for the norm, depending on the picture to which it applies - you should experiment and decide for yourself on case by case basis.

Target black luminance (Display tab)

The destination parameters set the target luminance values used to remap the tones through filmic rgb. The default parameters will work 99% of the times, the remaining 1% being when you output in linear RGB space (REC709, REC2020) for media handling log-encoded data. These settings are then to be used with caution because darktable does not allow separate pipelines for display preview and for file output.

The target black luminance parameter allows to set the ground-level black of the target medium. Set it greater than 0% if you want raised, faded blacks to achieve a retro look.

Target middle-grey (Display tab)

This is the middle-grey of the output medium, that is used as a target for the filmic rgb S curve central node. On gamma corrected media, the actual grey is computed with the gamma correction (middle-grey^(1/gamma)), so a middle-grey parameter of 18% with a gamma of 2.2 gives an actual middle-grey target of 45.87%.

Target white luminance (Display tab)

The target white luminance parameter allows to set the ceiling level white of the target medium. Set it lower than 100% if you want dampened, muted whites to achieve a retro look.

Target power factor function

The power of the output transfer function, often improperly called the gamma (only screen have a gamma), is the parameter used to raise or compress the mid-tones to account for the display non-linearities or to avoid quantization artifacts when encoding in 8 bits file formats. This is a common operation when applying ICC color profiles (except for linear RGB spaces, like REC 709 or REC 2020, which have a linear gamma of 1.0). However, at the output of filmic rgb, the signal is logarithmically encoded, which is not something ICC color profiles know to handle. As a consequence, if we let them apply a gamma 1/2.2 on top, it will result in a double up, and the middle-grey will be remapped to 76% instead of 45% as it should.

To avoid double ups and washed pictures, filmic rgb applies a gamma compression reverting the output ICC gamma correction, so the middle-grey is correctly remapped at the end. To remove this compression, set the destination power factor to 1.0 and the middle-grey destination to 45%.


The filmic rgb module can seem pretty complex; here is a proposed workflow for processing an image with filmic rgb to obtain a well-exposed picture from a RAW file.

  1. Modify the exposure in the exposure module so that the midtones are clear enough. Do not worry about losing details in the highlights: they will be recovered by the next steps of the processing.

  2. In filmic rgb, start with neutral parameters: set the the middle grey luminance to 18.45% in the scene tab, and set the contrast to 1 in the look tab.

  3. Adjust the white-relative and black-relative exposures in the scene tab; set the middle grey luminance as well.

  4. In the look tab, experiment with the contrast parameter. Increase the latitude as much as you can without clipping the curve, slide it with the shadows/highlights balance parameter.

  5. filmic rgb tends to compress the local contrast - you can compensate for that using the local contrast module.

  6. You may also want to increase the saturation in the color balance module, and adjust settings in the tone equalizer module.

  7. Do the last adjustments in filmic rgb, and your picture is now ready for creative processing.

Filmic rgb for Darktable 2.6 filmic users

Filmic rgb is a reimplementation of the filmic module, and some adjustments are necessary to switch from one version to the other. This last section underlines the most important differences; a more comprehensive overview is available as a video called darktable 3.0 filmic explained to users of darktable 2.6. The major differences points when it comes to usage are the following:

  • The default parameters of both modules are not comparable: activating the filmic rgb module with default parameters does not yield the same results as the previous filmic module with default parameters.

  • The latitude is now expressed in percentage of the dynamic range instead of absolute EV values.

  • The saturation slider that was present in the previous version of filmic to avoid oversaturation is not necessary anymore since filmic rgb does a much better job at preserving colors.

  • The previous version of filmic was always using the prophoto RGB profile; filmic rgb respects the working color profile defined in the input color profile module. To keep the same behaviour, you can set the working profile to linear prophoto RGB.

To achieve similar results between the previous version of filmic and filmic rgb, the following steps are suggested:

  1. Transfer the parameters from filmic to filmic rgb. The latitude parameter is now given in percentage of the input dynamic range: compute that percentage from your filmic input values.

  2. Lower the contrast.

  3. Set the extreme luminance saturation to 50%, unless you are using the chrominance preservation.

  4. Adjust the shadows/highlights balance to avoid clipping of the curve

  5. Rais the middle grey luminance a bit, set the dynamic range scaling to approximately 6%.

  6. The old preserve chrominance setting corresponds to the max RGB mode; in that case, do not modify the extreme luminance saturation.

  7. If you experience weird color shifts, change the working color space to prophoto RGB in the input color profile module.