Ship a Vivid section of presets
Five looks for "more colourful than the default": Vivid, Vivid strong, Vivid landscape, Vivid warm and Vivid portrait. They lean on vibrance, which lifts muted colours most and holds skin back, and use saturation sparingly on top; landscape and portrait work the colour mixer's bands so foliage and sky get richer while skin does not. A sixth, Stronger camera look, pushes the camera profile's look table to 175 %, about the step from Adobe Standard to Adobe Vivid, and only moves vibrance where a photograph has no profile. All change only what they name, so they keep a corrected exposure or white balance, and the shipped-preset tests bound every key and value.
This commit is contained in:
@@ -0,0 +1,75 @@
|
|||||||
|
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
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
# Each changes only what it names (FR-DEV-6), so a corrected exposure or
|
||||||
|
# white balance survives applying one.
|
||||||
|
|
||||||
|
[preset Vivid]
|
||||||
|
contrast.contrast = 10
|
||||||
|
saturation.saturation = 8
|
||||||
|
vibrance.vibrance = 30
|
||||||
|
|
||||||
|
[preset Vivid, strong]
|
||||||
|
blacks_whites.blacks = -10
|
||||||
|
clarity.amount = 8
|
||||||
|
contrast.contrast = 18
|
||||||
|
saturation.saturation = 15
|
||||||
|
vibrance.vibrance = 45
|
||||||
|
|
||||||
|
# Foliage and sky: green and chartreuse for leaves and grass, azure and blue
|
||||||
|
# for sky and water, a little yellow for dry grass and stone. The skin bands
|
||||||
|
# — red and orange — are left where they are, so a figure in a landscape
|
||||||
|
# keeps a human complexion.
|
||||||
|
[preset Vivid landscape]
|
||||||
|
clarity.amount = 10
|
||||||
|
colour_mixer.azure_lum = -10
|
||||||
|
colour_mixer.azure_sat = 20
|
||||||
|
colour_mixer.blue_lum = -10
|
||||||
|
colour_mixer.blue_sat = 15
|
||||||
|
colour_mixer.chartreuse_sat = 15
|
||||||
|
colour_mixer.green_sat = 20
|
||||||
|
colour_mixer.yellow_sat = 10
|
||||||
|
contrast.contrast = 12
|
||||||
|
saturation.saturation = 5
|
||||||
|
vibrance.vibrance = 25
|
||||||
|
|
||||||
|
# Golden hour: oranges and yellows up and a warm cast laid over the
|
||||||
|
# highlights only, so shadows stay clean rather than muddy.
|
||||||
|
[preset Vivid warm]
|
||||||
|
colour_grading.highlight_hue = 45
|
||||||
|
colour_grading.highlight_strength = 12
|
||||||
|
colour_mixer.orange_sat = 15
|
||||||
|
colour_mixer.red_sat = 8
|
||||||
|
colour_mixer.yellow_sat = 15
|
||||||
|
contrast.contrast = 8
|
||||||
|
vibrance.vibrance = 25
|
||||||
|
|
||||||
|
# People: everything around the subject gets richer while skin does not.
|
||||||
|
# Vibrance already protects skin; the orange and red bands are then held a
|
||||||
|
# little below where they started, because a face is the one colour every
|
||||||
|
# viewer knows the right value of.
|
||||||
|
[preset Vivid portrait]
|
||||||
|
colour_mixer.azure_sat = 10
|
||||||
|
colour_mixer.blue_sat = 12
|
||||||
|
colour_mixer.green_sat = 12
|
||||||
|
colour_mixer.orange_sat = -10
|
||||||
|
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
|
||||||
@@ -65,6 +65,7 @@ const SECTIONS: &[(&str, &str, &str)] = &[
|
|||||||
include_str!("../presets/essentials.drpl"),
|
include_str!("../presets/essentials.drpl"),
|
||||||
),
|
),
|
||||||
("skies", "Skies", include_str!("../presets/skies.drpl")),
|
("skies", "Skies", include_str!("../presets/skies.drpl")),
|
||||||
|
("vivid", "Vivid", include_str!("../presets/vivid.drpl")),
|
||||||
(
|
(
|
||||||
"colour_film",
|
"colour_film",
|
||||||
"Film/Colour",
|
"Film/Colour",
|
||||||
|
|||||||
@@ -1823,7 +1823,7 @@ mod tests {
|
|||||||
let rows = presets.rows();
|
let rows = presets.rows();
|
||||||
assert!(rows.iter().all(|r| r.folder && r.depth == 0), "{rows:?}");
|
assert!(rows.iter().all(|r| r.folder && r.depth == 0), "{rows:?}");
|
||||||
let labels: Vec<_> = rows.iter().map(|r| r.label.to_string()).collect();
|
let labels: Vec<_> = rows.iter().map(|r| r.label.to_string()).collect();
|
||||||
assert_eq!(labels, ["Essentials", "Skies", "Film"]);
|
assert_eq!(labels, ["Essentials", "Skies", "Vivid", "Film"]);
|
||||||
|
|
||||||
presets.toggle("shipped/Film");
|
presets.toggle("shipped/Film");
|
||||||
let film: Vec<_> = presets
|
let film: Vec<_> = presets
|
||||||
@@ -1835,7 +1835,7 @@ mod tests {
|
|||||||
assert_eq!(film, ["Colour", "Cinema", "Black and white"]);
|
assert_eq!(film, ["Colour", "Cinema", "Black and white"]);
|
||||||
|
|
||||||
presets.toggle("shipped/Film");
|
presets.toggle("shipped/Film");
|
||||||
assert_eq!(presets.rows().len(), 3);
|
assert_eq!(presets.rows().len(), 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
|||||||
Reference in New Issue
Block a user