Darkroom: step one
The previewer opens with the launch argument -routeDarkroomLab in a debug build. It lets you pick any roll and print, scrub or play the four stages at game pace, change the development map, move every constant on a slider, add fog, show the mask, and put the print in the tray. Copy values puts your tuned constants on the clipboard to send back.
Stages 1 → 3 with the tell held back
Two changes to the spec's starting formula came from looking at these. A tell held at paper-white read as a white hole in a finished day picture and a glowing ghost in the night one, pointing straight at the detail. The held-back area now develops its broad, blurred tone along with its surroundings, and only its detail waits for the last stage. Strength also rises on a curve, because dark tones come first and otherwise made stage 1 too strong on dark prints.
Rolls without masks yet
Tray, fog and mask


What to judge on your phone
- Does it read as a photograph developing? Press Next to watch one stage at game pace.
- Does stage 1 give too much away? Try Early contrast and Contrast curve.
- Does the held-back area still draw the eye at stages 2–3? Try Tell hold and Tell delay.
- Does fog read as damage without hiding what the student needs? Use Wrong answer and Fog grey.
Checks run
| Check | Result |
|---|---|
| Core: manifest, development rules, fog (17 tests) | Pass |
| App: render check on the real shader, held-back, grey-only and unmasked prints (3 UI tests) | Pass: stage 4 equals the master with max Δ 0, and the mask arrives unaltered |
| Device frame rate, small phone | Not run |