ComfyUI Node

Sabattier

Sabattier — partial solarization for that Man Ray look

By jeremieLouvaert·Created 5 months ago·Updated 2 days ago· 101
Sabattier
  • image
  • image
re_exposure1.00
shield1.0
mackie_intensity0.50
edge_width2.0
strength1.00

Sabattier is the weird one, and it's glorious. Also known as the Sabattier effect or partial solarization, it's what happens when you re-expose film to light partway through development: the already-developed silver shields the emulsion, so the highlights get folded back to dark while the deep shadows hold, and bright contour lines trace every edge. It's the Man Ray look - figures outlined in light, skies gone grey, tones inverted in a way that reads as chemistry, not a filter. Most apps just offer a "solarize" invert-and-curve; this node models the actual mechanism, right down to the bright Mackie lines at density edges.

It's an effects node, not a realism tool, so your instinct should be: dramatic image, high key, strong subject against a bright background. That's where the reversal is most legible. The repo's derivation doc is admirably honest about the tiering: the direction and non-monotonic mechanism are physically grounded (silver shielding, density adding while reflectance is logarithmic), while the renormalization and Mackie composition are tuned to the look rather than calibrated to a named developer process.

How it works

The core is a non-monotonic tone map on linear luminance: x_out = x · 10^(−β · x^k). First-development density darkens bright areas, and a fogging density proportional to x^k penetrates the unshielded silver - so highlights reverse while shadows are preserved. The Mackie lines are composed from the Eberhard adjacency kernel (the same CSF kernel the pack's Adjacency Acutance node uses), derived from the original luminance so the halos trace real contours.

Because it uses pixel neighborhoods, Sabattier is not allowed inside the LUT bake chain - spatial effects corrupt the lattice. Apply it after Extract, to the final image only.

The inputs that matter

  • re_exposure (0–3, default 1, labelled β) - the depth of the tonal reversal. 0 is no solarization (identity); higher values fold highlights darker and intensify the effect.
  • shield (0.5–4, default 1, labelled k) - how sharply the reversal is confined to highlights. Low k spreads the fold into midtones; high k makes it threshold-like, touching only the brightest tones.
  • mackie_intensity (0–2, default 0.5) - strength of the bright contour halos. 0 kills them; they're half the look, so try them before you disable them.
  • edge_width (0.5–8 px, default 2) - the spatial scale of the Mackie lines, defined as gaussian sigma at a 1024-long edge and scaled proportionally with resolution.
  • strength (0–1) - blend between original and processed, like every Darkroom node.

Output is image.

Install & notes

Standard pack install: Manager → search "Darkroom", or git clone https://github.com/jeremieLouvaert/ComfyUI-Darkroom + pip install -r requirements.txt + restart. Pure numpy/scipy - the scipy.ndimage gaussian filter does the contour work - so it's CPU-only and instant.

Practical advice: start with the defaults, keep strength below 1, and don't put it on a low-key image and wonder why nothing happened - the reversal needs bright highlights to fold. And if your output looks like a cheap invert, raise re_exposure and drop shield until the highlights actually fold instead of just darkening.

CategoryAKURATE/Darkroom/Film

Inputs (6)

NameTypeDefaultDescription
imageIMAGE
re_exposureoptFLOAT1.000–3beta — depth of the tonal reversal. 0 = no solarization (identity LUT). Higher values fold the highlights darker and intensify the reversal.
shieldoptFLOAT1.00.5–4k — sharpness/confinement of the reversal to the highlights. Low k spreads the fold into the midtones; high k confines it to only the brightest tones (threshold-like).
mackie_intensityoptFLOAT0.500–2Mackie-line strength. Bright contour halos tracing density edges, composing the Eberhard CSF adjacency kernel. 0 = no Mackie lines.
edge_widthoptFLOAT2.00.5–8Mackie-line spatial scale: gaussian sigma in pixels at 1024 long edge, scales proportionally with image resolution (same formula as Eberhard).
strengthoptFLOAT1.000–1Blend between original (0) and fully processed (1).

Outputs (1)

NameTypeDescription
imageIMAGE