Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
55 commits
Select commit Hold shift + click to select a range
daeecc4
initial darktable spektrafilm commit
piratenpanda Jul 12, 2026
6ac3194
Remove superflous mentions of the old module
piratenpanda Jul 12, 2026
6cd405b
fix film selection dropdown default
piratenpanda Jul 12, 2026
bcf5a0e
fix for kodak_2302 negative bw paper
piratenpanda Jul 12, 2026
521a762
reorg files to /common
piratenpanda Jul 12, 2026
727c138
Use dt_gaussian_mean_blur_cl instead of fast to avoid border artifacts
piratenpanda Jul 13, 2026
1692465
Add advanced options drop down menu to reduce default height of module
piratenpanda Jul 13, 2026
b7bb339
reset print exposure to 0 EV when enabling auto print exposure
piratenpanda Jul 13, 2026
4ca3ae0
move scan film option to the advanced section as it's a rather automa…
piratenpanda Jul 13, 2026
fbfe4de
remove tick from disabled auto print exposure toggle for positive films
piratenpanda Jul 13, 2026
0bac56e
Change module to lowercase and write better description
piratenpanda Jul 14, 2026
2d6311a
register spektrafilm in the legacy iop-order migration path
piratenpanda Jul 14, 2026
ce335f2
Add tabbed interface to prepare for more options
piratenpanda Jul 15, 2026
061e551
add remaining spektrafilm diffusion filters, add preflash, add pre co…
piratenpanda Jul 15, 2026
6959a9e
allow manual right click gain amount up to 8
piratenpanda Jul 15, 2026
d57d420
Prevent accidental double clicking on film and print tab header reset…
piratenpanda Jul 15, 2026
4409502
spektrafilm: add print diffusion stage
Arecsu Jul 16, 2026
8ede623
spektrafilm: improve code comments
Arecsu Jul 16, 2026
fb660d9
spektrafilm: GPU optimization — gauss pre-allocation, async boost, tm…
Arecsu Jul 16, 2026
b5f24de
spektrafilm: CPU optimization — transposed blur, bilinear/trilinear, …
Arecsu Jul 16, 2026
a0fb6f1
spektrafilm: -fno-math-errno flag + NEON matrix multiply for expose
Arecsu Jul 16, 2026
722d047
add migration for new print diffusion stage
piratenpanda Jul 17, 2026
91e1965
Halation now behaves like original spektrafilm, per film and we now e…
piratenpanda Jul 17, 2026
b47e51f
Make halation amount behave like the original
piratenpanda Jul 17, 2026
ea09d6c
add strength to halation and grain sliders to clarify
piratenpanda Jul 17, 2026
c70e02c
additional safeguards to not reset to wrong values on tab double click
piratenpanda Jul 17, 2026
d2c0c5f
spektrafilm: group film/print dropdowns by color/monochrome sections
Arecsu Jul 17, 2026
8fbc8a6
spektrafilm: natural sort for profile lists
Arecsu Jul 18, 2026
fd7ea4c
move away from darktable gaussians and use the same as spektrafilm
piratenpanda Jul 19, 2026
aaa7b10
move grain to multi sublayer
piratenpanda Jul 19, 2026
273b8cc
add calibration constant to make grain behave more like spektrafilm
piratenpanda Jul 19, 2026
a0cb53a
improve performance
piratenpanda Jul 19, 2026
19454d2
more performance improvements
piratenpanda Jul 19, 2026
e8fcada
spektrafilm: multiplicative unsharp mask after grain blur
Arecsu Jul 19, 2026
7186a72
spektrafilm: fix grain brightness shift across zoom levels
Arecsu Jul 19, 2026
44cd6a2
spektrafilm: fix fireflies in grain recovery USM
Arecsu Jul 19, 2026
0e7b7d2
fix grain changing exposure and add picker to pre compression boost
piratenpanda Jul 20, 2026
505a5b1
fix comment
piratenpanda Jul 20, 2026
128c2bb
add development section with push pull and gamma settings
piratenpanda Jul 21, 2026
f838f63
turn auto print exposure off by default and move development and pref…
piratenpanda Jul 21, 2026
7491a63
rename film and print to media
piratenpanda Jul 21, 2026
c47fc78
fix picker segfaulting
piratenpanda Jul 21, 2026
8bba8f9
fix grain color cast
piratenpanda Jul 22, 2026
7dd8790
fix module reset not always resetting to default parameters the first…
piratenpanda Jul 22, 2026
bd2eb33
use long side for film format and default to 35mm
piratenpanda Jul 23, 2026
476c000
make grain adhere to reference implementation and set default parameters
piratenpanda Jul 23, 2026
0c13f59
restructure UI on feedback
piratenpanda Jul 23, 2026
c6e5c93
fix USM oversharpening on zoom out
piratenpanda Jul 23, 2026
ccea8c2
safeguard scan button from resetting
piratenpanda Jul 25, 2026
6797d15
remove stale code, make algorithms adhere to spektrafilm ref code, ad…
piratenpanda Jul 26, 2026
69a1eb6
more fixes for BW films, expose development time for films and papers…
piratenpanda Jul 26, 2026
ef87cda
Set development time slider to stock/paper default, have one slider i…
piratenpanda Jul 26, 2026
7a5141e
limit DIR coupler range to 1 to keep it invertible
piratenpanda Jul 26, 2026
a5a0a82
follow the Bauhaus checkbox changes
piratenpanda Jul 27, 2026
f618e7e
Reset module to v1, remove special checkbox handling as this is now a…
piratenpanda Jul 27, 2026
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
1 change: 1 addition & 0 deletions data/kernels/programs.conf
Original file line number Diff line number Diff line change
Expand Up @@ -42,3 +42,4 @@ capture.cl 38
agx.cl 39
colorharmonizer.cl 40
overlay.cl 41
spektrafilm.cl 42
1,086 changes: 1,086 additions & 0 deletions data/kernels/spektrafilm.cl

Large diffs are not rendered by default.

10 changes: 10 additions & 0 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,8 @@ FILE(GLOB SOURCE_FILES
"common/ratings.c"
"common/resource_limits.c"
"common/selection.c"
"common/spektra_core.c"
"common/spektra_sim.c"
"common/splines.cpp"
"common/styles.c"
"common/system_signal_handling.c"
Expand Down Expand Up @@ -1018,6 +1020,14 @@ add_library(lib_darktable SHARED ${DARKTABLE_BINDIR}/preferences_gen.h ${DARKTAB
# since this isn't the same directory we do have to manually set it
set_source_files_properties(${DARKTABLE_BINDIR}/version_gen.c PROPERTIES GENERATED TRUE)

# spektrafilm: -fno-math-errno tells the compiler math functions never set errno,
# enabling more aggressive optimization around powf/exp2f/log10f calls.
set_source_files_properties(
"common/spektra_core.c"
"common/spektra_sim.c"
PROPERTIES COMPILE_OPTIONS "-fno-math-errno"
)

add_dependencies(lib_darktable generate_styles_string)
add_dependencies(lib_darktable generate_conf)
add_dependencies(lib_darktable generate_version)
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 @@ -144,6 +144,7 @@ const dt_iop_order_entry_t legacy_order[] = {
{ {45.5f }, "agx", 0},
{ {46.0f }, "filmic", 0},
{ {46.5f }, "filmicrgb", 0},
{ { 46.7f }, "spektrafilm", 0 },
{ {47.0f }, "colisa", 0},
{ {48.0f }, "zonesystem", 0},
{ {49.0f }, "tonecurve", 0},
Expand Down Expand Up @@ -258,6 +259,7 @@ const dt_iop_order_entry_t v30_order[] = {
{ {45.3f }, "sigmoid", 0},
{ {45.5f }, "agx", 0},
{ {46.0f }, "filmicrgb", 0}, // same, upgraded
{ { 46.7f }, "spektrafilm", 0 },
{ {36.0f }, "lut3d", 0}, // apply a creative style or film emulation, possibly non-linear
{ {47.0f }, "colisa", 0}, // edit contrast while damaging colour
{ {48.0f }, "tonecurve", 0}, // same
Expand Down Expand Up @@ -377,6 +379,7 @@ const dt_iop_order_entry_t v50_order[] = {
{ {45.3f }, "sigmoid", 0},
{ {45.5f }, "agx", 0},
{ {46.0f }, "filmicrgb", 0}, // same, upgraded
{ { 46.7f }, "spektrafilm", 0 },
{ {36.0f }, "lut3d", 0}, // apply a creative style or film emulation, possibly non-linear
{ {47.0f }, "colisa", 0}, // edit contrast while damaging colour
{ {48.0f }, "tonecurve", 0}, // same
Expand Down Expand Up @@ -497,6 +500,7 @@ const dt_iop_order_entry_t v30_jpg_order[] = {
{ {45.5f }, "agx", 0},
{ { 45.3f }, "sigmoid", 0},
{ { 46.0f }, "filmicrgb", 0 }, // same, upgraded
{ { 46.7f }, "spektrafilm", 0 },
{ { 36.0f }, "lut3d", 0 }, // apply a creative style or film emulation, possibly non-linear
{ { 47.0f }, "colisa", 0 }, // edit contrast while damaging colour
{ { 48.0f }, "tonecurve", 0 }, // same
Expand Down Expand Up @@ -619,6 +623,7 @@ const dt_iop_order_entry_t v50_jpg_order[] = {
{ { 45.3f }, "sigmoid", 0},
{ {45.5f }, "agx", 0},
{ { 46.0f }, "filmicrgb", 0 }, // same, upgraded
{ { 46.7f }, "spektrafilm", 0 },
{ { 36.0f }, "lut3d", 0 }, // apply a creative style or film emulation, possibly non-linear
{ { 47.0f }, "colisa", 0 }, // edit contrast while damaging colour
{ { 48.0f }, "tonecurve", 0 }, // same
Expand Down Expand Up @@ -735,6 +740,7 @@ void dt_ioppr_migrate_legacy_iop_order_list(GList *iop_order_list)
_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, "colisa", "spektrafilm");
_insert_before(iop_order_list, "colorbalancergb", "colorequal");
_insert_before(iop_order_list, "highlights", "rasterfile");
_insert_before(iop_order_list, "colorbalance", "colorharmonizer");
Expand Down
Loading
Loading