Skip to content

Commit

Permalink
Move pixelpipe discussion to its own section
Browse files Browse the repository at this point in the history
  • Loading branch information
elstoc committed Dec 8, 2024
1 parent 36f2d85 commit 69957fe
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 19 deletions.
10 changes: 10 additions & 0 deletions content/darkroom/pixelpipe/the-pixelpipe-and-module-order.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,16 @@ The order of the pixelpipe is represented graphically by the order in which modu

---

# types of pixelpipe

Processing images can be very resource-intensive. For this reason, darktable includes various types of pixelpipe, optimised for different parts of the system. For example:

- The export pixelpipe processes the full-sized image at full quality. This is the slowest type of pixelpipe, but provides the maximum available image quality.
- The thumbnail pixelpipe is optimised for speed, since it needs to process multiple small images at the same time without impacting lighttable or filmstrip performance. These optimisations impact image quality, but this is not usually a problem for the small images used in thumbnail generation.
- The standard darkroom pixelpipe attempts to produce as accurate an image as possible, while also maintaining responsiveness when modifying module parameters. It does this by only processing the pixels that are visible on-screen -- known as the "region of interest" (ROI). However, this can mean that the image doesn't accurately reflect the exported file, especially when using modules that rely on the properties of neighboring pixels. This is particularly noticeable in modules that impact local contrast (e.g. _diffuse or sharpen_, _denoise (profiled)_ and _local contrast_) and can mean that the darkroom view appears over-sharpened compared to a full-sized export.
- A cut-down darkroom pixelpipe is used while interacting with some darkroom modules that display the full image with overlays (like _retouch_, _crop_ and _liquify_). This pixelpipe excludes some long-running modules (like _diffuse or sharpen_) in order to improve responsiveness, but can temporarily make the image look under-processed (blurred). This limitation is removed as soon as you move focus to a different module.
- In order to overcome the above limitations within the standard darkroom pixelpipe, you can enable [high quality processing mode](../../module-reference/utility-modules/darkroom/high-quality-processing.md) in the darkroom view. This mode processes the entire image using the export pixelpipe and only downscales for display at the end of the pipe. This means that the darkroom image will very closely match the exported image, but will significantly degrade responsiveness when interacting with processing modules. You are advised to only use this mode after you have already done most of your processing. Its performance will be significantly improved by using an OpenCL-capable GPU.

# module order and workflows

The order in which modules are executed within the pixelpipe has been carefully chosen to give the best output quality. In previous versions of darktable it was not possible to change the module order. However, there are a number of very specific use cases where the movement of some modules within the pixelpipe is advised.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,24 +6,8 @@ tags:
view: darkroom
---

Click the ![high quality processing icon](./high-quality-processing/high-quality-processing-icon.png#icon) icon to activate high quality processing in the pixelpipe.
Process the image in the darkroom view using "high quality mode", so that the displayed image reflects the appearance of a full-sized export.

Darktable pixelpipes process the modules in slightly different ways, the thumbnail pipe as an example is optimized for speed.
Activate this mode by clicking the ![high quality processing icon](./high-quality-processing/high-quality-processing-icon.png#icon) icon at the bottom of the darkroom view.

The darkroom pixelpipes for the main canvas and the second monitor try to keep resources within limits by downscaling and by
restricting the processed data to what is actually displayed - in darktable speak this is the "region of interest" (ROI).

Yet - for exports we have to process the whole image - likely without downscaling - resulting in much larger processing times
and possibly visible differences compared to what you have seen in darkroom.

These differences are mostly very subtle but in some cases they are likely to be observed.
Modules like "diffuse or sharpen" using large radii, "profiled denoise" or "local contrast" are more prone to this problem.

For the user this usually means: there will be visible and unexpected differences between "what you see in darkroom" and the exported image.
Also there might be visible differences if you zoom in or out.

To avoid these problems you might activate the high quality processing mode. If toggled on, the darkroom pixelpipes are processed
with all available data so the results are as while exporting in high quality mode.

Please note, this takes large resources and requires a good OpenCL card and CPU for a responsive user interface especially if you keep changing
any module parameters.
Note that while this mode provides the most accurate representation of the processed image, it also results in signficant performance degredation. Please see the [types of pixelpipe](../../../darkroom/pixelpipe/the-pixelpipe-and-module-order.md#types-of-pixelpipe) section for a full discussion.

0 comments on commit 69957fe

Please sign in to comment.