RESOLVE FX · EXTERNAL TRANSFORM CONTRACT
OCIO File Transform.
Load the transform.
Verify the contract.
A file-based OpenColorIO Resolve FX for applying external LUT/CDL/CCC transforms. Learn what the file actually controls, when CCC ID matters, why Reverse is only an attempted inverse, how interpolation depends on reader support, and how to validate the same transform across hosts.
LUT File · version/hash
CCC ID when relevant
Forward / Reverse / Interpolation
In the lab, switch the same synthetic file between Forward/Reverse, then compare Linear with coarse sampling. The point is not to imitate a real LUT reader; it is to separate file identity, direction and sampling as three different failure sources.
Independent deterministic teaching model. Demo files and interpolation modes are synthetic and intentionally do not claim to reproduce Resolve/OpenColorIO LUT readers, exact 3D LUT interpolation, file-format support, or inverse behavior. Use it to understand causality: file identity, CCC selection, direction, interpolation, and diagnostics.
Three native Resolve 21 Inspector captures plus an independent file-transform teaching model.
FILE · CCC · DIRECTION · INTERPOLATION01THE FILE CONTRACT
Four ideas prevent most OCIO File Transform mistakes.
The panel is tiny because most of the color decision lives outside Resolve: in the transform file, its expected input, and the reader that evaluates it.
The file is part of the color contract
OCIO File Transform does not declare Source and Output spaces. It executes an external transform file. Reproducibility therefore requires more than noting “a .cube was used”: record the exact file/version, the expected input state, and node placement in the pipeline. The same LUT placed before or after a display transform may produce fundamentally different results.
CCC ID addresses a record; it does not author one
An ASC CCC may contain multiple CDL corrections. CCC ID selects a specific record inside that container. OpenColorIO also permits a string index; if the ID is empty, the first CDL is selected. An empty field may therefore appear to “work,” but a production hand-off should still state the intended record explicitly.
Reverse is not a time machine
Reverse changes evaluation direction but does not guarantee source recovery. Clipping, non-invertible LUTs, baked display shaping, and finite sampling may already have discarded information. Validate round trips on test patches and real highlights rather than judging a single frame by eye.
Interpolation is a LUT execution property
Interpolation determines how values between LUT samples are evaluated, but not every file format uses that parameter in the same way. OpenColorIO explicitly notes that readers which care about interpolation try to honor the requested method and otherwise use an allowed default. “Linear selected” and “guaranteed Linear inside every file” are not the same statement.
02REAL RESOLVE 21 CONTROLS
Read the native Inspector as identity first, execution second.
The captures show the actual Resolve labels. Disabled controls in the no-file state are not missing features; they become meaningful when a compatible file is loaded.
First verify that the intended transform is actually loaded.
LUT File
Path to the external transform file OpenColorIO must read and apply. Blackmagic describes this FX as loading and applying LUTs to the node; OpenColorIO FileTransform supports multiple reader formats.
Record the file version/hash. The same `show.cube` filename on two machines does not guarantee identical contents.Browse
Opens the external LUT/transform file chooser. After replacing the file, downstream validation should be treated as new because the color contract itself has changed even if the input state has not.
Do not anchor a production dependency only in a user Downloads folder. Use a stable pipeline/project path.CCC ID
Selects a specific CDL inside a compatible CCC/CC container. According to OpenColorIO, the value may be a case-sensitive ID or an index as a string; an empty value returns the first CDL.
If the field is disabled for a normal LUT, that is expected. Do not invent a CCC ID for a file that does not contain a CDL collection.03DIRECTION ≠ RESTORATION
Forward, Reverse and Interpolation answer different questions.
Direction chooses which way the transform is evaluated. Interpolation chooses how LUT samples are evaluated when the reader supports it. Neither one repairs a wrong file or wrong input state.
Once the file is identified, control direction and sampling behavior.
Forward
Applies the file transform in its declared forward direction. This is the normal mode for a show LUT, technical LUT, or look transform.
Forward does not know whether the input is in the space the file expects. Correct input state remains your responsibility.Reverse
Attempts to evaluate the same transform in the inverse direction. Blackmagic describes this as attempting to remove the LUT from the node; OpenColorIO changes transform evaluation direction.
Do not use Reverse as a universal unbake. Verify that the forward transform is actually invertible and did not clip data.Interpolation
Controls how a LUT is evaluated between discrete sample points. The native capture shows Linear as the current value; Blackmagic describes the control as choosing the quality/render-time tradeoff.
Not all formats/readers respond identically to requested interpolation. Check banding, hue kinks, and cross-application consistency using the actual file.OpenColorIO reference: FileTransform API ↗
04A REPRODUCIBLE FILE PATH
A reliable workflow begins before Browse and ends after scopes.
The transform file is not self-documenting. Reproducibility needs the expected input state, exact file identity, optional CCC record, execution policy and measured output verification.
Declare the expected input
A file transform only works as intended when the incoming RGB is in the state the file was designed for. The FX does not declare this for you.
Teaching pipeline, not a literal Resolve node graph. The file transform operates on pixels; file identity, expected input, and hand-off metadata live outside the transform math.
Related technical pages: OCIO Display ↗ · OCIO Color Space ↗ · Fusion OCIOFileTransform ↗
05PRODUCTION RECIPES
Test the contract, not just the look.
File transforms often look plausible even when placed incorrectly. Use repeatable A/B tests and explicit metadata instead of trusting familiarity.
Show LUT for review
Place the LUT exactly where it was designed to operate, keep Forward, and document whether another display/view transform is added after it. Check skin, saturated colors, and highlights—the areas where a double transform is usually most obvious.
Shot CDL from .ccc
Choose the container, then explicitly select the CCC ID for the intended shot. Compare against the expected grade reference and record the ID in the hand-off. An empty ID may select the first record and accidentally look plausible.
Testing Reverse
Build an A/B path: source → Forward → Reverse, then compare with the original using difference/waveform. If mismatch concentrates in highlights or saturated regions, the forward stage may already have discarded information and “tuning Reverse” will not recover it.
Cross-application verification
Use the same file, input state, direction, and agreed interpolation policy in Resolve and the second OCIO host. Compare a test chart and real frames. If outputs diverge, verify file/version and reader support before compensating with creative grading.
06USE THE RIGHT OCIO TOOL
A file transform, color-space transform, display transform and CDL edit are different contracts.
Choose from what must be reproduced in another host: an external file, a named space conversion, a viewing transform, or editable SOP/Saturation values.
External LUT / file
Use when the external transform file itself is the contract and must be executed consistently.
Source → Output
Use when the transform should be built from named technical spaces in the active config.
Source → Display / View
Use for config-defined viewing/display rendering, not as a generic LUT loader.
Slope / Offset / Power / Sat
Use when portable editable ASC CDL values are the actual hand-off rather than a baked LUT file.
07TROUBLESHOOTING
Symptoms usually point to identity, input state or invertibility before they point to “bad color.”
Reduce the path to one file transform, verify its expected input, then add other color-management/display stages back one at a time.
The LUT looks excessively contrasty or overcooked.
Likely cause: Wrong input state, or the same display/look transform is already applied upstream/downstream.
Fix: Bypass neighboring transforms, confirm the file's expected input, and keep a single instance of the look/display operation.
Reverse does not restore the original image.
Likely cause: The forward stage is non-invertible, clipped values, or the file/reader lacks exact inverse semantics.
Fix: Run a measured round trip on patches; if the error is systematic, return to the original media/grade state instead of trying to force Reverse to match.
A CCC container produces the wrong shot grade.
Likely cause: Empty/wrong CCC ID, case mismatch, or an index pointing at another record.
Fix: Inspect the records in the container, use the exact case-sensitive ID, and store it in shot metadata/hand-off.
Resolve and another OCIO host show slightly different gradients/colors.
Likely cause: Interpolation request/fallback, reader implementation, file version, or input state differs.
Fix: First align the file and input, then verify interpolation support for that format. Evaluate a difference signal, not only visual impression.
08PRE-FLIGHT
A file transform is finished when another workstation can reproduce the same output for the same input.
09FAQ
Practical OCIO File Transform questions.
How is OCIO File Transform different from OCIO Color Space?
OCIO Color Space builds a transform from named spaces in the active `.ocio` config. OCIO File Transform executes an external file transform/LUT. The file may belong to the same pipeline, but it does not by itself declare a Source→Output space contract.
Why is CCC ID sometimes disabled?
Because it only matters for formats containing addressable CDL/CCC entries. A normal single LUT has no internal correction record to select.
Is Linear always the best interpolation?
No. Blackmagic describes interpolation as a quality/render-time tradeoff, and OpenColorIO notes that applicability depends on the reader/format. Validate the choice on the actual LUT and against any required cross-host consistency.
Will Reverse remove a baked LUT?
Only if the transform supports a sufficiently accurate inverse and no data was lost. Clipping and non-invertible shaping cannot be undone.
Does OCIO File Transform require a `.ocio` config?
The primary object of this FX is the file transform itself. However, the wider OpenColorIO environment and library/reader versions may still matter for production reproducibility. Do not confuse it with OCIO Color Space/Display, where the config directly defines spaces/views menus.
10SOURCES & BOUNDARIES
Resolve labels come from native captures; FileTransform semantics are cross-checked against Blackmagic and OpenColorIO.
The interactive lab is an independent deterministic teaching model. It is not a reverse-engineered Resolve/OpenColorIO FileTransform implementation and does not claim exact LUT readers, supported formats, interpolation, CCC parsing or inverse behavior.