After more than a decade using Darktable as my main photo editor, I’m trying to better understand how it works to teach fellow photographers how to use it. I want to better understand what’s going on “under the hood” so I can better explain what each module does and how they interact.
There’s something I’m missing about display referred vs scene referred workflows:
I know display referred means the image being rendered into the used monitor before the changes are made. And I can see that choosing one or the other workflow will change the modules shown in the toolbar.
So, when I choose one or the other module, does it just change the modules shown in the toolbar, so no display referred modules will affect a scene referred workflow, or does it perform any other action alongside showing/hiding modules?
And, if I am working on a scene referred workflow and include a module not included on it by default, does that break the workflow? For example, I usually work on scene referred, using contrast equalizer and masked tone curves after doing general image adjustments. When using those modules, am I forcing the image data to be stretched into display render, thus loosing scene-referred editing capabilities? As I tend to do it at the end of the workflow I might easily have not realized about it.
‘Scene referred’ means that some image pixel value is over 100% of the display colour space (i.e. the value would be over 255 R/G/B. ‘Display referred’ means it’s all inside of the display colour space.
‘Scene referred’ modules are built to handle values outside of the display space.
Choosing the ‘display referred (legacy)’ workflow option puts the base curve module quite early unless I’m mistaken.
The ‘scene referred’ workflow is easy to get used to. Start with exposure, use a tonemapper (filmic/sigmoid/AgX) if the image data (histogram) goes over 100%.
If I understand you and I might not…you are talking about several things interwoven in the DR vs SR pipelines…there is a selection to choose a display referred workflow…or one of the scene referred versions…
For the most part this will use the legacy module order, use wb in a traditional way not using color calibration out of the gate and the default blend modes will not be scene when blending the modules and masks if you choose the display referred…
This puts uses the basecurve as the tone mapper and puts it before the input profile…
So the bulk of the modules that follow will do their edits in display space and non-linear adjustments…
In the scene referred workflow if you do use the base curve it is still a display referred module but it is used in the same position as the other tone mappers so that it doesn’t do that initial establishment of the display space. This is the default 5.0 module order
Overall, some modules use rgb and some use lab colorspaces and some use other custom color spaces ie in color calibration and some other modules will use UCS or JzHzCz…Some modules will do a linear edits and some will apply a non linear manipulation to the edit…
In general the scene referred workflows will try to use modules designed in a way to keep the data “linear” and unclipped so that edits are predictable and proportionate and in some cases less prone to artifacts. The tonemappers in the SR workflow are the gatekeeper between the scene and display part of the pipeline… Modules that expect display referred data and that might be used with the base curve in the legacy mode will in general now come after the tone mapper as they expect the data in display space. They are expecting the data in the 0 to 100 range and their UI controls only impact the data in that range… If you do place these modules before the tonemappers the most likely thing that you will do is potentially introduce a non-linear manipulation of the data and or the module can only adjust the data in the display referred range. The data is not “clipped” in DT it is passed along but could be distorted… In SR white can be much greater than the display can handle so the anchor becomes middle grey and then the tone mappers are used to map the data around that into what the display can handle. Along the way many modules have a fulcrum command that you can use to adjust this. This is way overly simplistic and the extent to which this impacts your edits might depend on the image and what edits you place on it.
In general you can use whatever modules that you want if they give you the results that you are looking for but you just need to be aware of the impact of moving one infront of the tone mapper and you might find that modules that follow require more fiddling to get the desired correction because you have made that change or maybe not… the SR modules are designed to work together and you could disrupt this…again that might be simply a technical outcome and you might still get the results that you are happy with…
The intent of the scene referred is I think, as I understand it to preserve the relationship for as much of the data from the scene without clipping and in linear form as the base from which to make adjustments that are proportional, more predictable, and less prone to artifacts when pushed…
There is an often quoted blog post that you might want to read if you have not. Its a bit old but it holds up mostly… about Lab vs RGB modules in darktable…an updated review also by Aurelien on his Ansel site might be a decent explanation for you to follow and use as a guide for your education purposes…
As stated in your own topic title, the choice between scene and display-referred workflow definitely changes the order of the modules. You can also set that manually below the module stack.
Blend modes can be influenced by the choice, too; whether a module is affected depends on its working space: RGB follows the scene/display referred option, HSL, JzCzHz remain display and scene-referred, respectively. Parametric masks are also affected.
Even the scene-referred workflow’s default module list has some display-referred modules - they simply come after the tone mapper. A simple example is local contrast.
As Todd said, the legacy workflow option puts base curve, which changes global contrast, early on in the pixelpipe. The scene referred order has a global contrast curve in a tonemapper near the end of the pipe.
No, the default module order is designed to be robust about this. However, the tonemapper provides that ‘0-100%’ protection, and modules afterwards in the pixelpipe, e.g. local contrast can push highlights back above that.