mirror of
https://github.com/storytold/lightcraft.git
synced 2026-10-14 19:27:01 -04:00
Issue #188: Tint sign documented as landed (DNG / Lightroom sign)
#258 left the Tint row at 🟡 and docs/tint-direction.md as a review note. The sign now matches the slider's track, the DNG specification and Lightroom XMP, so the row is back to ✅; the doc says what happens to saved custom tints (they shift the other way; nothing is rewritten) and What's new tells users. Co-Authored-By: Hanmo <[email protected]> Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01912WaK6Rmew3wxZuPyX7E8
This commit is contained in:
3 files changed
+11
-12
No files matched your search
+2
-2
@@ -66,7 +66,7 @@ Take the first one nobody is working on.
|
||||
3. **LR-IMP-CAMERA-COVERAGE** (P0): per-model verification; grow the CC0 corpus and fix per-model bugs (like the CR2
|
||||
colour-filter layout, fixed in #85 by reading the file's own tag).
|
||||
4. **LR-BEHAV-RENDER-FIDELITY** (P1): a side-by-side fidelity suite against Lightroom renders (kept local in `plan/`),
|
||||
then tune tone, highlights, texture/clarity/dehaze, NR and sharpening against it. Global Tint direction has isolated regression coverage; review existing-edit compatibility before landing its corrected sign.
|
||||
then tune tone, highlights, texture/clarity/dehaze, NR and sharpening against it.
|
||||
5. **LR-EDIT-OPTICS-PROFILE** (P1): a lens-profile database of our own (embedded DNG/maker corrections work today).
|
||||
6. **AI masks and Enhance** (LR-MASK-SUBJECT / SKY / PEOPLE / OBJECTS, LR-EDIT-DETAIL-DENOISE, SUPERRES, LENSBLUR):
|
||||
Object and Describe masks run SAM 3 in pure Rust (`crates/segment`); the weights (SAM License) are never bundled:
|
||||
@@ -234,7 +234,7 @@ under the UI command that wraps it (a no-op error); the UI command now wins.
|
||||
| LR-EDIT-COLOR-WB-PRESET | White-balance presets | P0 | ✅ | `cmd:develop.wb` | |
|
||||
| LR-EDIT-COLOR-WB-PICKER | White-balance eyedropper | P0 | ✅ | `cmd:tool.wbPicker`, `cmd:develop.wbPick` | no magnified loupe while picking |
|
||||
| LR-EDIT-COLOR-TEMP | Temperature | P0 | ✅ | `ctl:wb.temp` | relative scale for non-raw in the UI |
|
||||
| LR-EDIT-COLOR-TINT | Tint | P0 | 🟡 | `ctl:wb.tint`, `docs/tint-direction.md` | Negative/left adds green and positive/right magenta; CPU/GPU regression tests. Existing-edit/preset/XMP migration policy needs review before landing |
|
||||
| LR-EDIT-COLOR-TINT | Tint | P0 | ✅ | `ctl:wb.tint`, `docs/tint-direction.md` | DNG / Lightroom sign: negative (left) adds green, positive (right) magenta; XMP `crs:Tint` values render as in Lightroom (issue #188); CPU/GPU regression tests |
|
||||
| LR-EDIT-COLOR-VIBRANCE | Vibrance | P0 | ✅ | `ctl:color.vibrance` | |
|
||||
| LR-EDIT-COLOR-SATURATION | Saturation | P0 | ✅ | `ctl:color.saturation` | |
|
||||
| LR-EDIT-COLOR-MIXER-HSL | 8-band colour mixer | P0 | ✅ | `ctl:mixer.*` | no targeted (drag-on-image) mode |
|
||||
|
||||
+4
-10
@@ -1,6 +1,6 @@
|
||||
# Global Tint direction: proposed correction and compatibility
|
||||
# Global Tint direction
|
||||
|
||||
This change is under review. Negative/left Tint should add green; positive/right should add magenta. It is a global white-balance change, not a Nikon-specific decoder fix.
|
||||
Negative (left) Tint adds green; positive (right) adds magenta, as the slider's track shows and as in Lightroom and the DNG specification (issue #188). It is a global white-balance change, not a Nikon-specific decoder fix.
|
||||
|
||||
## Reproducible evidence
|
||||
|
||||
@@ -16,18 +16,12 @@ cargo test -p lightcraft-gpu --test equivalence tint_directions -- --nocapture
|
||||
cargo test -p lightcraft-color cct
|
||||
```
|
||||
|
||||
For an external behaviour reference, see Adobe's Lightroom Classic documentation, [Adjust image color and tone](https://helpx.adobe.com/lightroom-classic/help/tone-control-adjustment.html), in the white-balance/Tint section. The automated documentation fetch returned HTTP 403 during this split, so this PR's directly verified evidence is the existing UI convention and synthetic rendered pixels above; it does not claim a new observed Lightroom comparison or copy any Adobe asset/profile.
|
||||
|
||||
## Why the sign changes
|
||||
|
||||
`temp_tint_to_xy` describes the **source illuminant** removed by Bradford adaptation. To add magenta to the output, the source white must be greener (positive Duv), not more magenta. Therefore the correction convention requires `Duv = +tint / TINT_SCALE`, and the inverse conversion must return `tint = +Duv * TINT_SCALE`.
|
||||
|
||||
The CPU and GPU consume the same `wb_matrix_for` result. RAW white-point inference, auto WB and the picker use the inverse conversion. Both directions change together; local mask tint and calibration shadow tint are unchanged. The render-cache version increases to invalidate stale output.
|
||||
|
||||
## Existing edits: review required
|
||||
## Existing edits
|
||||
|
||||
This changes the rendering meaning of saved nonzero global Tint values, including catalog edits, presets, history and imported XMP. No values are silently rewritten and no automatic migration is included. An old Auto WB result stored as numeric settings is also an existing edit; rerunning Auto computes values in the new convention.
|
||||
|
||||
As Shot continues to apply an identity adjustment. For a source whose As Shot tint is zero, negating the previous custom Tint reproduces its previous appearance. This is not a universal migration: calibrated RAW can retain a nonzero, old-sign reference tint in catalog metadata, cached source information or smart previews. Those references and their provenance need consideration alongside the edit. Existing XMP may originate from another application using the intended correction convention, so indiscriminately negating all imported values is also wrong.
|
||||
|
||||
Before merging, decide whether to version/migrate native saved edits and reference metadata, preserve a legacy rendering mode, or accept an explicitly documented rendering change. Keep this PR a draft until that policy is reviewed. If another render-cache change lands first, rebase and increment the cache version again.
|
||||
Before this change the sign was the other way round, so a saved non-zero custom Tint (a catalog edit, a preset, history) now renders with the opposite green/magenta shift; As Shot, Auto and the presets that compute their values are unaffected, and re-running Auto or the picker gives values in the new convention. Tint values imported from Lightroom XMP (`crs:Tint`) were rendered the wrong way round before and now render as in Lightroom. No saved values are rewritten.
|
||||
@@ -13,6 +13,11 @@
|
||||
with a counterpart here come along, the rest is listed.
|
||||
- 23 new built-in presets: Portrait, Landscape, Urban, Food, Seasons, Vintage and B&W toners.
|
||||
|
||||
### Editing
|
||||
- The Tint slider works the right way round (issues #188, #321): left adds green, right adds magenta, as its track
|
||||
shows and as in Lightroom, and Tint values in Lightroom XMP sidecars now render as they do there. A custom Tint
|
||||
saved in an earlier version now shifts the other way; set it again (or re-run Auto / the white-balance picker).
|
||||
|
||||
### Reliability
|
||||
- On macOS, single-key shortcuts that appear in the menu bar now work: E, C, H, M, ⇧P, I, K, D, ratings 0–5,
|
||||
labels 6–9, P / U and the rest did nothing, because macOS only passes ⌘ / ⌃ combinations and function keys
|
||||
|
||||
Reference in new issue
Block a user