Skip to content

Spektrafilm (dev branch) analog film simulation module#21534

Draft
piratenpanda wants to merge 14 commits into
darktable-org:masterfrom
piratenpanda:spektrafilm
Draft

Spektrafilm (dev branch) analog film simulation module#21534
piratenpanda wants to merge 14 commits into
darktable-org:masterfrom
piratenpanda:spektrafilm

Conversation

@piratenpanda

@piratenpanda piratenpanda commented Jul 12, 2026

Copy link
Copy Markdown
Contributor

This module brings the spektrafilm project (https://github.com/andreavolpato/spektrafilm) to darktable. Spektrafilm simulates analog film processes and applies them to digital images.

This module has been derived from the spektrafilm project and tries to stay as close or exact to the algorithms used there.

Currently it looks like this:
grafik

Film and print stocks can easily be selected via drop downs. Further settings are then handled inside the respective tabs (currently untranslated).

Default settings are Portra 400 and Portra Endura which transform your image from
grafik

to
grafik

Currently almost every film/paper combination from the spektrafilm dev branch is working except for Kodak 2302. Grain, Halation and Diffusion models are working as well.

Discussion thread and the python script needed to create the necessary spektrafilm data for darktable can be found here: https://discuss.pixls.us/t/spektrafilm-darktable-module-sort-of/58744/

@piratenpanda piratenpanda marked this pull request as draft July 12, 2026 07:57
Comment thread src/common/spektra_core.c
Arecsu added a commit to Arecsu/spektrafilm that referenced this pull request Jul 14, 2026
Uses spektrafilm's dev branch (git+https://github.com/andreavolpato/spektrafilm@dev)
to generate pack.json, spectra_lut.f32, and profiles/*.json for the native
darktable module (PR darktable-org/darktable#21534).

Run: uv run --python 3.13 --with 'spektrafilm@git+https://github.com/andreavolpato/spektrafilm@dev' python3 export_pack.py -o ~/.config/darktable/spektrafilm
@Arecsu

Arecsu commented Jul 14, 2026

Copy link
Copy Markdown
Contributor

This is just amazing, love this

Comment thread src/iop/spektrafilm.c Outdated
Comment thread src/iop/spektrafilm.c Outdated
@Arecsu

Arecsu commented Jul 14, 2026

Copy link
Copy Markdown
Contributor

Right now there is a problem where, if I load up an already existant photo + XMP settings from my database, the module won't show up and I will get this in the CLI:

   312.1009 cannot get iop-order for spektrafilm instance 0
   467.4585 cannot get iop-order for spektrafilm instance 0
   467.4784 cannot get iop-order for spektrafilm instance 0

I have to edit a new image from a clean slate in order for the spektrafilm module to show up.

Other than that, working awesome. This is the scariest, closest film simulation look and feel I've ever got from any photo editing pipeline, in any software. And oh god did I spent a crazy amount of time on it. Main reason I fell in love with Darktable was because I could get really close to it with the existent modules. AGX, Diffuse and Sharpen, LUTs... Until I came across spektrafilm, and now this module... it is a game changer. There's currently no way to achieve these visuals otherwise. Props to @andreavolpato!

@piratenpanda

Copy link
Copy Markdown
Contributor Author

@Arecsu should be fixed with the latest commit

@Arecsu

Arecsu commented Jul 14, 2026

Copy link
Copy Markdown
Contributor

@piratenpanda Thank you!

You may be interested in Arecsu@f2ce151, which I made on top of your PR

I've created this pre-compression boost as I find myself reaching out the tone curve module very often to push the histogram to the right when I use spektrafilm, because it tends to aggressively limit the highlights ceiling in some cases. This slider should preserve the characteristics of the module, gently pushing or pulling the histogram.

Feel free to test it and incorporate it into your PR in any case!

@Arecsu

Arecsu commented Jul 14, 2026

Copy link
Copy Markdown
Contributor

Hey, I found another reference: this Davinci Resolve OFX based on spektrafilm and exposing far more options, in a nice workflow as well:

I think the UI/UX and the options exposed by it are more appealing here in darktable for this module, as well as the logic behind them.

Here at 5:45 you can see it being used. It does seem comprehensible and with many interesting sliders and selectors as well.

@piratenpanda

Copy link
Copy Markdown
Contributor Author

Thanks for the input. I'd like to move design/implementation discussions to the pixls thread to make it easier to follow :)

@TurboGit

Copy link
Copy Markdown
Member

@piratenpanda : I would edit the first message to give a high level description of what this does, what is the goal and maybe some screenshots with before/after to illustrate the points.

@piratenpanda

Copy link
Copy Markdown
Contributor Author

@TurboGit initial update done. Thanks!

@piratenpanda piratenpanda changed the title Initial darktable spektrafilm (dev branch) module adds a spektrafilm (dev branch) analog film simulation module Jul 15, 2026
@piratenpanda piratenpanda changed the title adds a spektrafilm (dev branch) analog film simulation module Spektrafilm (dev branch) analog film simulation module Jul 15, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants