Describe the measured tone and vibrance in DarkRoom's own terms

The calibration commits named DarkRoom's default curve after another
product and described vibrance as doing what another editor's does at
the same value. The curve is the DNG SDK's reference, so it is called
that; vibrance is scaled to deliver the strength its value names, as
measured against the photographer's earlier exports. Two test names
follow. The measurements and where they came from are unchanged.
This commit is contained in:
2026-10-03 16:41:11 -04:00
parent 7ae1e27810
commit 185e134ead
6 changed files with 21 additions and 21 deletions
+1 -1
View File
@@ -3420,7 +3420,7 @@ mod tests {
read_centre(&ctx, t)
};
// The default rendering is Camera Raw's curve (D21); for a grey its
// The default rendering is the DNG reference curve (D21); for a grey its
// ProPhoto round trip is the identity, so the reference applies as is.
let scene = 3537.0 / 16383.0;
let viewed = dr_pipeline::camera_raw::apply_reference(
+6 -6
View File
@@ -24,9 +24,9 @@ uniforms:
amount:
value: vibrance / 100 * 1.3
doc: |
Scaled so that a value here does what the same value of Lightroom's
Vibrance does. Measured, not chosen: fitted on 45 Lightroom exports whose
only colour setting was Vibrance (about +24), against their raws.
Scaled so that a value delivers the strength it names. Measured, not
chosen: fitted on 45 of the photographer's earlier exports whose only
colour setting was a vibrance of about +24, against their raws.
helpers: [luminance]
@@ -66,10 +66,10 @@ tests:
- name: it_starts_neutral
expect_active: false
- name: the_amount_is_lightrooms_scale
- name: the_amount_is_the_measured_scale
why: |
Fitted against Lightroom exports: DarkRoom's vibrance at a value does
what Lightroom's does at the same value.
Fitted against the photographer's earlier exports, so a value delivers
the strength it names.
set: { vibrance: 100 }
expect: { amount: 1.3 }
+1 -1
View File
@@ -113,7 +113,7 @@ mod tests {
}
#[test]
fn the_default_adds_the_contrast_lightroom_showed() {
fn the_default_adds_the_measured_contrast() {
// Fitted on Lightroom exports with neutral settings (D21 addendum):
// the bare reference curve is a little flat against them.
let p = contrast_power(DEFAULT_CONTRAST);
+2 -2
View File
@@ -34,9 +34,9 @@ pub const ID: OpId = OpId("view_transform");
pub const CONTRAST: ParamId = ParamId("contrast");
pub const WHITE: ParamId = ParamId("white");
/// TRACES: FR-DEV-3j
/// Which curve renders: Camera Raw's (D21, the default) or D19's sigmoid.
/// Which curve renders: the DNG reference (D21, the default) or D19's sigmoid.
///
/// Camera Raw's because it is the one that matches what the photographs were
/// The reference because it is the one that matches what the photographs were
/// first developed with: on 60 Lightroom exports with neutral settings it
/// renders their raws within MSE ~150 of Lightroom's own JPEGs at the default
/// contrast, where 0.20.0's sigmoid was ~1200 (darker by about 0.7 EV and
+5 -5
View File
@@ -51,17 +51,17 @@ pub const SCENE_GREY: f32 = 0.13;
/// Display-linear middle grey — what a camera JPEG shows a grey card as.
pub const DISPLAY_GREY: f32 = 0.18;
/// The default contrast: the sigmoid's log-log slope `n`, and for Camera
/// Raw's curve a power of `DEFAULT_CONTRAST / REFERENCE_CONTRAST` about grey.
/// The default contrast: the sigmoid's log-log slope `n`, and for the DNG
/// reference curve a power of `DEFAULT_CONTRAST / REFERENCE_CONTRAST` about grey.
///
/// Fitted, not chosen: on Lightroom 6 exports whose look settings were neutral,
/// Camera Raw's curve matched the exports best with the input bent by about
/// the DNG reference curve matched the exports best with the input bent by about
/// 1.08 (held-out MSE 224 at 1.4, ~150 at 1.5). The sigmoid, which is no longer
/// the default, fitted best near 1.7 and is better at 1.5 than at 1.4.
pub const DEFAULT_CONTRAST: f32 = 1.5;
/// The contrast at which each curve is its own reference: the sigmoid's match
/// to the retired base curve (see the module note), and Camera Raw's table
/// to the retired base curve (see the module note), and the reference table
/// untouched.
pub const REFERENCE_CONTRAST: f32 = 1.4;
@@ -237,7 +237,7 @@ mod tests {
fn the_reference_stays_close_to_the_retired_curve() {
// TRACES: FR-DEV-3j | FR-DEV-3e
// D19's promise, now kept by the sigmoid at its reference contrast
// rather than by the default (D21 moved the default to Camera Raw's
// rather than by the default (D21 moved the default to the DNG reference
// curve): the midtones do not move by more than a third of a stop
// from the retired base curve.
let s = Sigmoid::new(REFERENCE_CONTRAST, DEFAULT_WHITE);