From 54772f94d60aec8fc429589fc69575bcfcddeaf8 Mon Sep 17 00:00:00 2001 From: Duncan Tourolle Date: Fri, 2 Oct 2026 22:37:42 -0400 Subject: [PATCH] Correct what D20 claimed the profile tables would do for colour MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Measured after building them, on four of the library's 6D DNGs: Adobe Standard's tables lower mean saturation by 3-9 % at defaults, and the look at 200 % lowers it further. The 6D's look table scales saturation by 0.925 in its darkest value rows; it was tuned to sit under Camera Raw's default RGB tone curve, which DarkRoom does not apply, and the dark-tone desaturation is what is left without it. On _MG_9080 the Lightroom preview measures 0.49, the matrix alone 0.38, the profile 0.35. So the spec's "that gap is most of why the same file looks flatter" was wrong: the gap is tone. The tables stay — they put each hue where Adobe put it — and the spec, D20 and the Vivid file now say so. "Stronger camera look" is removed: a stronger Adobe Standard look is a less saturated picture, the opposite of its name. The Vivid presets, measured at 0.40-0.46 on the same frame, are what answers "more colourful" today. --- core/dr-pipeline/presets/vivid.drpl | 14 ++++--------- docs/dev/camera-profiles.md | 32 ++++++++++++++++++++++------- docs/dev/requirements.md | 8 ++++++-- 3 files changed, 35 insertions(+), 19 deletions(-) diff --git a/core/dr-pipeline/presets/vivid.drpl b/core/dr-pipeline/presets/vivid.drpl index 135cf1c..68236a2 100644 --- a/core/dr-pipeline/presets/vivid.drpl +++ b/core/dr-pipeline/presets/vivid.drpl @@ -3,9 +3,10 @@ drpl 1 # Vivid: more colour than the default rendering, for the photographer used # to Lightroom's richer starting point (camera-profiles.md §9). # -# Most of that difference is the camera profile's look table, which D20 now -# applies where a profile exists. These go further, and work on every -# photograph — a JPEG, a body with no profile — because they lean on +# That difference is mostly Camera Raw's tone curve, not the camera +# profile: Adobe Standard's look table, which D20 applies, desaturates dark +# tones (camera-profiles.md §1). So these do the work themselves, and work +# on every photograph — a JPEG, a body with no profile. They lean on # vibrance before saturation: vibrance lifts muted colours most and holds # skin back, so a frame gets richer before anything in it looks painted. # Saturation, which moves every colour alike, is used sparingly on top. @@ -66,10 +67,3 @@ colour_mixer.red_sat = -5 contrast.contrast = 6 saturation.saturation = -5 vibrance.vibrance = 25 - -# The camera profile's own look, pushed: Adobe Standard's look table at -# 175 % is close to the jump from Adobe Standard to Adobe Vivid. Where the -# photograph has no profile, only the vibrance moves. -[preset Stronger camera look] -camera_profile.look = 175 -vibrance.vibrance = 10 diff --git a/docs/dev/camera-profiles.md b/docs/dev/camera-profiles.md index 75b2590..1667e57 100644 --- a/docs/dev/camera-profiles.md +++ b/docs/dev/camera-profiles.md @@ -14,13 +14,25 @@ DarkRoom already applies, plus two lookup tables indexed by hue, saturation and - **`ProfileHueSatMap`** — a calibration. It corrects what a 3×3 cannot: a sensor whose reds and oranges sit in the wrong place relative to its blues, which no linear map fixes. Two copies, one per calibration illuminant, interpolated like the matrices. -- **`ProfileLookTable`** — a rendering intent. The "Adobe Standard" look: richer blues and greens, - warmer yellows, skin held where it is. The difference between Adobe Standard, Adobe Color and - Adobe Vivid is mostly this table. +- **`ProfileLookTable`** — a rendering intent: hue shifts of up to ±18° by hue, and saturation + and value scales that vary with brightness. The difference between Adobe Standard, Adobe Color + and Adobe Vivid is largely this table, together with each profile's tone curve. -Without them a raw renders through the matrix alone, which is accurate on a ColorChecker and reads -as flat next to Lightroom. The first complaint FR-DEV-3e's rationale names is exactly this, and -the per-body base curves D19 retired were the cheaper stand-in for it. +Without them a raw renders through the matrix alone, which is accurate on a ColorChecker and is +not what Lightroom showed for the same file. + +**What the tables do *not* do is make a photograph more saturated.** Measured after the build +(2026-10-02), on four of the library's 6D DNGs rendered at defaults: Adobe Standard's tables +*lower* mean saturation by 3–9 %, and the look at 200 % lowers it further. The 6D's look table +scales saturation by 0.925 in its darkest value rows and by 1.0 from about a fifth of full scale +up, and its HueSatMap adds about 1 %. Adobe Standard was tuned to sit under Camera Raw's default +RGB tone curve, which raises saturation in the shadows and midtones, and the look's dark-tone +desaturation offsets it. Without that curve (§6) the offset is all that is left. On `_MG_9080`, Lightroom 6's own preview +measures 0.49 mean HSV saturation; the matrix alone renders 0.38, Adobe Standard's tables 0.35. +That preview also carries whatever was edited in Lightroom, so it is not a clean reference — but +the direction is unambiguous: **the gap to Lightroom's colour is mostly tone, not the profile's +tables.** The tables still matter for hue: they are what puts each body's reds, skin and foliage +where Adobe put them. **What the library holds** (catalog of 2026-10-02): 17,286 of its raws are Canon EOS 6D. The 9,348 DNGs were written by Lightroom 6.14 and every one sampled embeds *Adobe Standard* with both @@ -212,7 +224,8 @@ action sits on that line. ## 9. Vivid presets -Independent of the tables, and shipped in the same change: a *Vivid* section of read-only presets +Independent of the tables, and — given §1's measurement — the part of this change that actually +answers "more colourful". Shipped in the same change: a *Vivid* section of read-only presets (`presets/vivid.drpl`) for the "more colourful than the default" request. They use only operations every photograph has — vibrance, saturation, the colour mixer, colour grading, contrast — so they work on JPEGs and on bodies with no profile, and change only what they name (FR-DEV-6): @@ -223,6 +236,11 @@ work on JPEGs and on bodies with no profile, and change only what they name (FR- - **Vivid warm** — oranges and yellows up, a warm highlight cast: golden hour. - **Vivid portrait** — vibrance (which protects skin) with the orange and red bands held back. +Measured on `_MG_9080` (mean HSV saturation; Lightroom's preview 0.49, DarkRoom's default 0.35): +Vivid 0.40, Vivid strong 0.44, Vivid landscape 0.46, Vivid warm 0.38, Vivid portrait 0.37 — the +last two move particular bands, not the whole frame. Rendered with `cargo run --release -p dr-gpu +--example develop -- FILE.dng out.ppm "preset:Vivid"`. + They are bounded by the existing `bundled.rs` tests: every key names a real parameter, every value is inside its control's range, and every preset changes something. diff --git a/docs/dev/requirements.md b/docs/dev/requirements.md index 993823b..bb2753f 100644 --- a/docs/dev/requirements.md +++ b/docs/dev/requirements.md @@ -2750,8 +2750,12 @@ operation at order 25, after exposure, converting into linear ProPhoto and back fragment.** Design and the full argument: [camera-profiles.md](camera-profiles.md). *Why now.* The library's 9,348 Canon 6D DNGs carry Adobe Standard's tables, which Lightroom -rendered them through, and DarkRoom ignored them. That gap is most of why the same file looks -flatter here. +rendered them through, and DarkRoom ignored them, so every hue on those files sat somewhere other +than where Lightroom put it. *Measured after building it:* the tables are not why Lightroom's +rendering looks richer — at defaults they lower mean saturation by 3–9 %, because Adobe Standard's +look desaturates dark tones to sit under Camera Raw's tone curve, which DarkRoom does not apply. +The richer colour is tone, and the Vivid presets (FR-DEV-6) are what answers it today +(camera-profiles.md §1). *Why there.* The matrix snippet stays what D19 made it, and every copy of it (masks, picker, camera-space tap) stays correct without changing. Hue and saturation are invariant under the