Re: combining a File-Based LUT Transform and a Display Transform?


Jeremy Selan <jeremy...@...>
 

This order (view channel matrix *before* 3d view transform) was intentional, and mimics what's going on under the hood in DisplayTransform:
https://github.com/imageworks/OpenColorIO/blob/master/src/core/DisplayTransform.cpp#L292

The rationale for applying the channel view matrix *before* the viewing transform is that, based on my understanding, most users actually want to inspect the imagery prior to cross-talk being introduced.

I.e., when you press 'R' to view 'red', my mental model is the artist wants to inspect the data that is in the source image's 'red channel', (rather than what happens to be driving the red output on the viewing display).  Consider looking at grain on a plate.  If you press 'R', you're probably concerned with just looking at the data in that channel, and are not concerned with the cross-talk in the viewing lut. Is there a time where it is useful to do the opposite?

This also has the added benefit that the output image is stable independent of output display.  I.e., one were to do the channel swizzling post view transform, pressing 'R' on a DLP vs. srgb display would yield very different images.  But doing channel swizzling before makes for a visually equivalent output. (such as in the above grain example).

The downside is that in this approach you can have a color cast to the 'grayscale' output of 'r,g,b,l' modes (if the viewing transform doesnt map gray to gray), but this is not typically a concern in practice. (and is often desired anyways in some cases)

Thoughts?

-- Jeremy

On Sun, Jan 29, 2012 at 4:11 AM, dbr/Ben <dbr....@...> wrote:
On 17/12/2011, at 3:46 AM, Paul Miller wrote:
if (fileTransform)
{
   OCIO::GroupTransformRcPtr group = OCIO::GroupTransform::Create();
   group->push_back(gainTransform);
   group->push_back(swizzle);
   group->push_back(fileTransform);
   group->push_back(expTransform);

   processor = config->getProcessor(group);
}

Was going through old emails and noticed - the swizzle should probably go after the fileTransform, in case the file has channel-crosstalk (e.g desaturating RGB would be very different to desaturating the swizzled "RRR")

Join ocio-dev@lists.aswf.io to automatically receive all group messages.