Each processing module takes its input from the preceding module in the pixelpipe, performs its operation on the image data, and then hands the output to the next module in the pixelpipe.

A module’s output data can optionally be reprocessed (combined) with its input data before being handed to the next module. This additional processing step is called blending – input and output data is reprocessed using algorithms called blending operators or blend modes.

Each blend mode is further controlled by the opacity parameter (having a value between 0% and 100%) which defines how much the input and output images contribute to the final result. Typically an opacity of 0% outputs an image which is identical to the input image (the module has no effect) whereas an opacity of 100% delivers the maximum effect of the module.

This opacity can be the same for every pixel (using the global opacity slider), in which case blending acts uniformly over the entire image. Alternatively the opacity values can vary depending on the properties or location of each pixel. This local modification of opacity is called a mask. Masks provide the user with fine control over which parts of an image are affected by a module and to what extent. You may activate a drawn mask, a parametric mask, a raster mask, or any combination of the three (see combining masks below).

Blending and masking functionality is controlled from a set of tabs at the bottom of each applicable module, one per masking method, each with its own Enable/Disable toggle. The drawn shapes you create here are the same objects listed in the mask manager (the Masking & Blending tool in the left panel), and can be reused across modules.

The available masking and blending methods are:

off
Module output is passed to the next module in the pixelpipe without additional reprocessing. No further controls are displayed.
uniformly
Input and output images are reprocessed uniformly with the chosen blend mode, where the amount of blending is controlled by a single opacity slider. Additional controls are displayed to allow the blend mode and opacity to be selected. The default is a blend mode of “normal” with an opacity of 100%.
drawn mask
Reprocessing takes place with the chosen blend mode and an opacity based on pixel location as defined by one or more drawn shapes. Additional controls are displayed to allow mask elements to be drawn. If no mask elements are drawn then all pixels have the same opacity, as defined by the opacity slider.
parametric mask
Reprocessing takes place with the chosen blend mode and an opacity based on the properties of individual pixels. Additional controls are displayed to allow the opacity to be adjusted on a per-pixel basis, determined by pixel values.
raster mask
Reprocessing takes place with the chosen blend mode and an opacity based on a mask that was generated by another module earlier in the pixelpipe.
blending options
Choose which color space to use when calculating the blending mask, and specify whether or not to allow a mask to be generated based on the module’s output channels (normally a parametric mask is generated based on the input channels coming into the module). The following options are available:
  • reset to default blend colorspace: Use the default color space for the module to specify the parametric mask.
  • Lab: Use the Lab color space (where available) to specify the parametric mask.
  • RGB (display): Use the display-referred RGB/HSL color space to specify the parametric mask.
  • RGB (scene): Use the scene-referred RGB/JzCzhz color space to specify the parametric mask.
  • show output channels: Show the parametric mask output channel controls, so that the parametric mask can be defined in terms of the module’s output channels.

Note: Not all of these blending options are available for every module.


Combining masks

Unlike Darktable, where you had to pick a single masking mode, Ansel exposes drawn, parametric and raster masking as independent toggles that can be combined. Each method has its own tab, and you enable as many as you need at once:

  • A drawn mask and a parametric mask combine according to the combine masks setting — see combining drawn & parametric masks.
  • A raster mask can now be combined on top of a drawn and/or parametric mask: the raster mask is used as the base, and the drawn and parametric masks refine it further. In Darktable, a raster mask was mutually exclusive with the other mask types and could not be refined.

The final per-pixel opacity is the product of every active mask, multiplied by the global opacity slider. A pixel excluded by any one mask (opacity 0) stays excluded, so adding a mask on top can only ever restrict the affected area, never extend it.