Skip to content

OCIO: don't discard resolved view when pipeline instance has no display (thumbnails / offscreen renders)#301

Open
jhery-rdo wants to merge 2 commits into
AcademySoftwareFoundation:developfrom
jhery-rdo:fix/ocio-empty-display-view-clobber
Open

OCIO: don't discard resolved view when pipeline instance has no display (thumbnails / offscreen renders)#301
jhery-rdo wants to merge 2 commits into
AcademySoftwareFoundation:developfrom
jhery-rdo:fix/ocio-empty-display-view-clobber

Conversation

@jhery-rdo

@jhery-rdo jhery-rdo commented Jul 3, 2026

Copy link
Copy Markdown
Contributor

Summary

Fixes thumbnails and offscreen renders being processed with the wrong OCIO view whenever the colour pipeline instance has no display attached.

  • Colour pipeline instances that never attach to a physical display — the dedicated thumbnail processor and offscreen/snapshot viewport instances — always have an empty Display attribute
  • OCIOEngine::process_thumbnail() and OCIOEngine::display_transform() reset both display and view to the config defaults when either is empty, so the correctly resolved per-media view is silently discarded for those instances
  • Media flagged by a media hook with untonemapped_view (e.g. display-referred dailies MOVs) get the config's default view applied on top of their baked-in look — a double grade — in thumbnails (media list, notes panel) and offscreen renders (snapshots, annotation exports). The interactive viewport is unaffected because its Display attribute is populated, which makes the defect easy to miss

Changes

  • src/plugin/colour_pipeline/ocio/src/ocio_engine.cpp: in process_thumbnail() and display_transform(), fill display and view independently — substitute the config default only for the component that is actually empty, so a valid caller-supplied view survives an empty display (and vice versa). In process_thumbnail(), also pass the filled _view to make_to_lin_processor() instead of the original (possibly empty) view, keeping the to-linear and display halves of the transform consistent
  • No behaviour change for pipeline instances with a populated display and view

Testing

  • Verified in production at RodeoFX on top of v1.3.0 with a media hook that sets untonemapped_view for display-referred QuickTimes: media-panel thumbnails, notes-panel thumbnails and annotation exports now render with the resolved per-media view instead of the config default
  • Interactive viewport behaviour unchanged
  • The patch cherry-picks cleanly between v1.3.0 and develop (the affected code is identical in both)

jhery-rdo added 2 commits July 3, 2026 13:35
… double-grade)

The dedicated 'thumbnail_processor' OCIO instance has no Display set (never
attached to a viewport/media source). OCIOEngine::process_thumbnail's combined
`if (display.empty() or view.empty())` reset _view to the config default view
(Client-look), so raw / display-referred media (e.g. dailies MOVs) got a double
grade in thumbnails. Fill display and view independently so a valid caller-supplied
view (e.g. "raw") survives an empty display, and use _view for the to-linear step.

Complements 3d8678c3 (sws colorspace/range for the thumbnail decode): raw view +
range-correct decode = the baked look, matching the viewport.

(cherry picked from commit 4a0d5c7697939162bb30b473bac0777573ce47cf)
Signed-off-by: Julien Hery <julien.hery@yahoo.fr>
…ers)

Same defect as the process_thumbnail fix (4a0d5c76), second site:
display_transform() reset both display AND view to the config defaults
whenever either was empty. Offscreen/snapshot viewport pipeline
instances always have an empty Display attribute, so a valid resolved
view (e.g. 'raw' for un-tone-mapped media) was replaced by the default
Client-look view, double-grading annotation exports and any offscreen
render. Fill display and view independently instead.

(cherry picked from commit e53a9849fc764cb25b25d2f05120cc30d7511b47)
Signed-off-by: Julien Hery <julien.hery@yahoo.fr>
@jhery-rdo jhery-rdo force-pushed the fix/ocio-empty-display-view-clobber branch from f202033 to 1c442d9 Compare July 3, 2026 17:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant