Skip to content

Rename Mask Blur to Mask Spacer and narrow it to 2-6% - #885

Merged
marcinz606 merged 1 commit into
mainfrom
refactor/mask-spacer
Aug 17, 2026
Merged

Rename Mask Blur to Mask Spacer and narrow it to 2-6%#885
marcinz606 merged 1 commit into
mainfrom
refactor/mask-spacer

Conversation

@marcinz606

Copy link
Copy Markdown
Owner

The contrast mask's radius control is renamed and its range tightened. Nothing about the operator changes.

Why the name

The slider is the sigma of the mask's blur, but the number reads backwards from a blur radius. A thin spacer makes the mask track the image more closely, so it cancels more of it: the print goes flatter at positive gamma and blooms at negative gamma. "Mask Blur" promised the print would get softer as the number went up, and the opposite happens. The spacer is the physical sheet that sets the unsharpness in the darkroom and it carries no such promise.

Why 2-6%

Measured per octave on a real Ektar scan, ratio against unmasked:

gamma +0.50 (reduction)      <2px   4    8    16   32   64  128  >128   global
  spacer 1%                  0.96  0.90 0.76 0.60 0.53 0.51 0.50 0.51   0.53x
  spacer 8%                  1.00  0.99 0.99 0.98 0.94 0.80 0.63 0.58   0.71x

gamma -0.50 (increase)
  spacer 1%                  1.04  1.11 1.27 1.42 1.47 1.49 1.50 1.50   1.48x
  spacer 8%                  1.00  1.01 1.01 1.03 1.09 1.24 1.40 1.44   1.37x

At 1% every band coarser than 8px collapses to a flat 0.5, which is a plain range scale plus a little of what Lab Sharpening already owns at 0.5-3.0px. The bottom of the old range was Grade under another label, so the floor moves to 2%. At 8% nothing under 64px moves at all, so the top moves to 6%.

The plane helper now clamps both ends rather than only the floor, so a value saved outside the new range cannot render wider than the slider can display.

Migration

mask_blur -> mask_spacer is one KEY_RENAMES entry. The field shipped in a merged PR but no release, so saved edits and sidecars can carry the old name.

Test

make all green: 4279 passed, 8 skipped. Includes a new test that a save under the old key still loads.

The control is the sigma of the mask's blur, but the number reads backwards
from one: a thin spacer makes the mask track the image more closely, so it
cancels more of it, and the print gets flatter (reduction) or blooms
(increase). Labelling that "Mask Blur" promised the opposite. "Spacer" is the
darkroom object that sets the unsharpness and carries no such promise.

Measured per octave on a real Ektar scan at g=+0.5: 1% attenuates every band
coarser than 8px to 0.5-0.76 and the global spread to 0.53x, which is a plain
range scale plus a little of what Lab Sharpening already does at 0.5-3.0px.
The bottom of the old range was Grade wearing a different label, so the floor
goes to 2%. The top goes to 6% since 8% left everything under 64px above 0.93.

The plane helper now clamps to both ends, not just the floor, so a value saved
outside the new range cannot render wider than the slider can show.

mask_blur -> mask_spacer is a KEY_RENAMES entry: the field shipped in a merged
PR, so saved edits and sidecars carry the old name even though no release does.
@marcinz606
marcinz606 merged commit 1739522 into main Aug 17, 2026
1 check passed
@marcinz606
marcinz606 deleted the refactor/mask-spacer branch August 17, 2026 20:33
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.

1 participant