Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
d230420
A port of Blender's AgX to darktable
kofa73 Jun 29, 2025
6976703
Fix side effect of transition point limits
kofa73 Jun 29, 2025
a78bff5
Added inline, conts, formatted according to PR comments
kofa73 Jul 2, 2025
057cf41
More formatting + inline
kofa73 Jul 3, 2025
c8ca80a
A tiny tweak to the outgoing params, bringing the largest matrix coef…
kofa73 Jul 4, 2025
05d5455
Moved the 'primaries from preset' combo + apply button above 'base pr…
kofa73 Jul 5, 2025
f02bb00
Removed tiling_callback (not needed for a simple pixel-wise module)
kofa73 Jul 6, 2025
2dc28a9
Converted some parameters to percentages
kofa73 Jul 6, 2025
faab84f
Extracted duplicated code to find the colourout module into _dt_ioppr…
kofa73 Jul 6, 2025
1e4d79a
Extracted deg2rad to common/math.h, updated conversions
kofa73 Jul 6, 2025
9c64b6e
Removed unnecessary modifications from iop_profile.c
kofa73 Jul 7, 2025
adc6da2
Added degrees/radians conversions to math.h (same as what we'll have …
kofa73 Jul 19, 2025
84a5641
agx: float literals, const
kofa73 Jul 20, 2025
87de3e7
revert unnecessary change in iop_profile.h
kofa73 Jul 20, 2025
292f955
agx: removed tiling; added aliases; removed custom hash function; ini…
kofa73 Jul 20, 2025
920f7fb
agx: formatting, alignment
kofa73 Jul 20, 2025
158a48f
agx: moved default_colorspace; multiline assignment = at end of line;…
kofa73 Jul 20, 2025
46299c5
agx: properly applied hash function suggestion
kofa73 Jul 20, 2025
60d1ba3
agx: minor comment updates; swapped offset and scale (in the look sec…
kofa73 Jul 25, 2025
e014287
agx: Renamed dt_iop_agx_user_params_t to dt_iop_agx_params_t, its poi…
kofa73 Jul 26, 2025
6cae3c8
agx: Replace duplicate curve control sliders + synch with reparenting…
kofa73 Jul 26, 2025
4019790
agx: Added DT_IOP_SECTION_FOR_PARAMS
kofa73 Jul 26, 2025
e1a3477
agx: Scale contrast according to gamma to maintain midtone contrast a…
kofa73 Jul 27, 2025
b5a05c7
agx: Use N_ with DT_IOP_SECTION_FOR_PARAMS
kofa73 Jul 27, 2025
ddbdbf2
agx: minor variable name clean-up
kofa73 Jul 28, 2025
fed635c
agx: _lerp_hue is now branch-free, including sanitisation of result; …
kofa73 Aug 19, 2025
f3f226e
agx: Further optimisation of _lerp_hue
kofa73 Aug 20, 2025
7b3ba3e
agx: calculate matrices only in process(), not in commit_params()
kofa73 Aug 26, 2025
094692b
agx: one param per line for _agx_tone_mapping()
kofa73 Aug 26, 2025
a600a78
Revert "agx: calculate matrices only in process(), not in commit_para…
kofa73 Aug 26, 2025
f85aac9
agx: In commit_params(), copy the parameters that are required to cal…
kofa73 Aug 27, 2025
ef59930
send look box to the bottom
blitzgneisserin Aug 30, 2025
277d3c9
basic curve parameters on both tabs
blitzgneisserin Aug 31, 2025
8f37392
Minor indentation and packing fixes
kofa73 Aug 31, 2025
182ac7d
agx: marked some functions as 'inline'; replaced famf with the safe m…
kofa73 Sep 7, 2025
e046655
agx: Optimisations for common scenarios: base profile = working profi…
kofa73 Sep 7, 2025
85059be
agx: Make sure exposure pickers deliver values within the sliders' ha…
kofa73 Sep 7, 2025
6c56a6d
agx: Use global max3f, min3f
kofa73 Sep 7, 2025
cb92319
agx: Fixed gamma contrast compensation
kofa73 Sep 8, 2025
6767759
agx: Added plugins/darkroom/agx/look_always_visible to keep 'look' co…
kofa73 Sep 8, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -25,3 +25,5 @@ output*png
Brewfile.lock.json
CMakeLists.txt.user
workspace/
cmake-build-debug/
.idea/
36 changes: 36 additions & 0 deletions data/darktableconfig.xml.in
Original file line number Diff line number Diff line change
Expand Up @@ -3520,6 +3520,7 @@
<enum>
<option>scene-referred (sigmoid)</option>
<option>scene-referred (filmic)</option>
<option>scene-referred (agx)</option>
<option>display-referred (legacy)</option>
<option>none</option>
</enum>
Expand Down Expand Up @@ -3858,6 +3859,41 @@
<shortdescription>active tab in tone equaliser module</shortdescription>
<longdescription>which of simple, advanced or masking tabs will show at startup</longdescription>
</dtconfig>
<dtconfig>
<name>plugins/darkroom/agx/enable_curve_tab</name>
<type>bool</type>
<default>false</default>
<shortdescription>whether to enable the curve tab</shortdescription>
<longdescription>if enabled, the settings tab will have fewer controls and will occupy less vertical space</longdescription>
</dtconfig>
<dtconfig>
<name>plugins/darkroom/agx/look_always_visible</name>
<type>bool</type>
<default>false</default>
<shortdescription>whether to keep look controls always visible</shortdescription>
<longdescription>if enabled, the look controls won't be placed in a collapsible section</longdescription>
</dtconfig>
<dtconfig>
<name>plugins/darkroom/agx/expand_curve_graph</name>
<type>bool</type>
<default>false</default>
<shortdescription>whether to expand the curve graph</shortdescription>
<longdescription>this is just to store whether to show the curve graph or not</longdescription>
</dtconfig>
<dtconfig>
<name>plugins/darkroom/agx/curve_graph_height</name>
<type min="100" max="300">int</type>
<default>200</default>
<shortdescription>height of agx graph in per cent</shortdescription>
<longdescription>height of agx graph in per cent</longdescription>
</dtconfig>
<dtconfig>
<name>plugins/darkroom/agx/expand_curve_advanced</name>
<type>bool</type>
<default>false</default>
<shortdescription>whether to show advanced curve parameters</shortdescription>
<longdescription>this is just to store whether to show advanced curve parameters or not</longdescription>
</dtconfig>
<dtconfig>
<name>plugins/lighttable/collect/windowheight</name>
<type>int</type>
Expand Down
6 changes: 6 additions & 0 deletions src/common/iop_order.c
Original file line number Diff line number Diff line change
Expand Up @@ -140,6 +140,7 @@ const dt_iop_order_entry_t legacy_order[] = {
{ {44.0f }, "lowlight", 0},
{ {45.0f }, "monochrome", 0},
{ {45.3f }, "sigmoid", 0},
{ {45.5f }, "agx", 0},
{ {46.0f }, "filmic", 0},
{ {46.5f }, "filmicrgb", 0},
{ {47.0f }, "colisa", 0},
Expand Down Expand Up @@ -253,6 +254,7 @@ const dt_iop_order_entry_t v30_order[] = {
// on camera JPEG default look
{ {45.0f }, "filmic", 0}, // same, but different (parametric) approach
{ {45.3f }, "sigmoid", 0},
{ {45.5f }, "agx", 0},
{ {46.0f }, "filmicrgb", 0}, // same, upgraded
{ {36.0f }, "lut3d", 0}, // apply a creative style or film emulation, possibly non-linear
{ {47.0f }, "colisa", 0}, // edit contrast while damaging colour
Expand Down Expand Up @@ -370,6 +372,7 @@ const dt_iop_order_entry_t v50_order[] = {
// on camera JPEG default look
{ {45.0f }, "filmic", 0}, // same, but different (parametric) approach
{ {45.3f }, "sigmoid", 0},
{ {45.5f }, "agx", 0},
{ {46.0f }, "filmicrgb", 0}, // same, upgraded
{ {36.0f }, "lut3d", 0}, // apply a creative style or film emulation, possibly non-linear
{ {47.0f }, "colisa", 0}, // edit contrast while damaging colour
Expand Down Expand Up @@ -487,6 +490,7 @@ const dt_iop_order_entry_t v30_jpg_order[] = {
{ { 44.0f }, "basecurve", 0 }, // conversion from scene-referred to display referred, reverse-engineered
// on camera JPEG default look
{ { 45.0f }, "filmic", 0 }, // same, but different (parametric) approach
{ {45.5f }, "agx", 0},
{ { 45.3f }, "sigmoid", 0},
{ { 46.0f }, "filmicrgb", 0 }, // same, upgraded
{ { 36.0f }, "lut3d", 0 }, // apply a creative style or film emulation, possibly non-linear
Expand Down Expand Up @@ -608,6 +612,7 @@ const dt_iop_order_entry_t v50_jpg_order[] = {
// on camera JPEG default look
{ { 45.0f }, "filmic", 0 }, // same, but different (parametric) approach
{ { 45.3f }, "sigmoid", 0},
{ {45.5f }, "agx", 0},
{ { 46.0f }, "filmicrgb", 0 }, // same, upgraded
{ { 36.0f }, "lut3d", 0 }, // apply a creative style or film emulation, possibly non-linear
{ { 47.0f }, "colisa", 0 }, // edit contrast while damaging colour
Expand Down Expand Up @@ -1177,6 +1182,7 @@ GList *dt_ioppr_get_iop_order_list(const dt_imgid_t imgid,
_insert_before(iop_order_list, "colorbalance", "diffuse");
_insert_before(iop_order_list, "nlmeans", "blurs");
_insert_before(iop_order_list, "filmicrgb", "sigmoid");
_insert_before(iop_order_list, "filmicrgb", "agx");
_insert_before(iop_order_list, "colorbalancergb", "colorequal");
_insert_before(iop_order_list, "highlights", "rasterfile");
}
Expand Down
3 changes: 2 additions & 1 deletion src/common/utility.c
Original file line number Diff line number Diff line change
Expand Up @@ -1162,7 +1162,8 @@ gboolean dt_str_commasubstring(const char *list,
gboolean dt_is_scene_referred(void)
{
return dt_conf_is_equal("plugins/darkroom/workflow", "scene-referred (filmic)")
|| dt_conf_is_equal("plugins/darkroom/workflow", "scene-referred (sigmoid)");
|| dt_conf_is_equal("plugins/darkroom/workflow", "scene-referred (sigmoid)")
|| dt_conf_is_equal("plugins/darkroom/workflow", "scene-referred (agx)");
}

gboolean dt_is_display_referred(void)
Expand Down
1 change: 1 addition & 0 deletions src/iop/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,7 @@ add_iop(cacorrectrgb "cacorrectrgb.c")
add_iop(diffuse "diffuse.c")
add_iop(blurs "blurs.c")
add_iop(sigmoid "sigmoid.c")
add_iop(agx "agx.c")
add_iop(primaries "primaries.c")
add_iop(colorequal "colorequal.c")
add_iop(rasterfile "rasterfile.c")
Expand Down
Loading
Loading