Re-record the manual under the scene-referred pipeline

D19 changed how every raw photograph renders, so every picture was
stale; all forty are recorded again from this tree. Beside the ones
already in the page there is now one for Tone Mapping: an alpine frame
whose clouds sit near white, its White Point raised to bring them back
and lowered for a brighter picture, its Contrast raised, then Before.

The panorama film unticks the first frame and ticks it back, so the
Frames list and the re-solve show; it no longer films minutes of
"Reading the frames", cutting from the first seconds of the job to the
alignment. The manual's presets menu opens beside the rail, not beside
the photograph.
This commit is contained in:
2026-09-27 19:43:09 -04:00
parent e600dae3df
commit 5e863fa718
34 changed files with 117 additions and 70 deletions
+41 -2
View File
@@ -784,6 +784,34 @@ def develop_light():
undo_all()
@scene(media=['develop-tonemap.gif'], sources=DEVELOP_SRC + PIPELINE_SRC)
def develop_tonemap():
"""Tone Mapping on an alpine frame whose clouds are nearly white: the
white point raised to bring the clouds back from white, then lowered
for a brighter, harder picture, the contrast raised, and Before held.
Its Contrast is the Light group's second, so it is taken by position."""
at_develop(ALPS_SKY)
group('Light')
in_column('White Point@Slider')
rec('develop-tonemap')
pause(0.8)
slide('White Point', TONEMAP_WHITE_UP)
pause(1.2)
slide('White Point', -TONEMAP_WHITE_DOWN)
pause(1.2)
x0, y0, x1, y1 = column()
cx, cy = handle(dr.find('Contrast@Slider#-1', within=(x0, y0, x1, y1)))
dr.drag(cx, cy, cx + TONEMAP_CONTRAST, cy, 25)
pause(1.2)
hold_before(1.6)
pause(1.0)
cut()
undo_all()
TONEMAP_WHITE_UP, TONEMAP_WHITE_DOWN, TONEMAP_CONTRAST = 80, 110, 90 # pixels along the track
@scene(media=['develop-zoom.gif'], sources=DEVELOP_SRC + ['ui/dr-ui/src/develop/render.rs'])
def develop_zoom():
"""1:1 with a double-click, a pan, and then further in with the wheel.
@@ -1289,11 +1317,22 @@ def join(name, parts):
'core/dr-pano/src/**'])
def panorama():
select_pano()
rec('panorama-a')
rec('panorama-0')
dr.click_on('Merge to panorama@Button')
pause(4)
cut()
# Reading and aligning twelve frames is minutes on a busy machine; the
# film shows it start and picks up once the alignment is on the page.
dr.wait_for('Fill the border@RadioButton', 600)
pause(3)
shot('panorama-aligned')
rec('panorama-a')
pause(1)
# The first frame left out and brought back: the rest are solved again
# from the pairs already matched, so each takes a moment, not a re-read.
for _ in range(2):
dr.click(*dr.centre(f'{PANO_FIRST}.CR2@CheckBox'))
pause(4)
for projection in ('Perspective', 'Spherical', 'Cylindrical'):
dr.click_on(f'{projection}@RadioButton')
pause(5)
@@ -1312,7 +1351,7 @@ def panorama():
dr.click_on('Merge@Button')
pause(8)
cut()
join('panorama', ['panorama-a', 'panorama-b'])
join('panorama', ['panorama-0', 'panorama-a', 'panorama-b'])
# The merge itself takes minutes too; the scene is done when the DNG is.
wait_for_new(DEMO_LIBRARY, '.dng', started, 600) if DEMO_LIBRARY else pause(60)
pause(5)