CLF Implementers Guide

On Tuesday’s call we discussed starting an outline document to kick off a draft of the documentation that this group will provide as one of its deliverables. I have started a very rough “outline” consisting of some subsections and a few bullet points on random thoughts associated with each. If anyone has ideas, comments or is inspired to expand on any of the sections, I encourage you to do so.

If you have more general comments in response to the document or discussion topics, feel free to post them in response on this thread.

[DRAFT] CLF Implementers Guide (Google Doc)

The document is also listed in the Documents on the VWG Dropbox Paper Site

Is there example C code for the latest 1.2 CLF version? Is there a description of the specific changes needed to be 1.2 compatible verses previous versions?

1 Like

Hi Charles,

We don’t supply C code, since not everyone is coding in C and exact implementations will vary. However, the underlying math should be the same, and the CLF Specification has been updated and is what is announced as part of ACES 1.2. The specification defines the elements and attributes and provides the formulas that should be followed by an implementation that has parsed them.

The updated specification was rewritten for clarity and, in the process, added some new functionality beyond CLF v2. You can read that updated spec here : S-2014-006 - Common LUT Format (CLF) - A Common File Format for Look-Up Tables

This Implementation group is currently working to create a set of test files, tools and documentation to assist implementers in knowing when they have a robust implementation of CLF that supports all the elements and attributes that can be used.

In Appendix D of the document linked above, there is s short summary of the changes from v2 which I’ve duplicated here. But the specific details for each node are explained in their respective sections in the specification.

  • Add Log ProcessNode
  • Add Exponent ProcessNode
  • Revise formulas for defining use of Range ProcessNode to clamp at the low or high end.
  • IndexMaps removed. Use a halfDomain LUT to achieve reshaping of input to a LUT.
  • Move ACEStransform elements to Info element of ProcessList in main spec
  • Changed syntax for dim attribute of Array when contained in a Matrix. Two integers are now used to define the dimensions of the matrix instead of the previous three values which defined the dimensions of the matrix and the number of color components.
  • Update schema to correct errors and include new elements

There will be a 1-hr Live Webinar about what’s new in 1.2 (both ACES Metadata File and CLF) on 4/29 11am PT - details here

Hi Charles,

There is now a complete C++ implementation of the latest CLF spec in OpenColorIO, on GitHub (master branch). This is cross-platform (Mac/Linux/Windows). There are also bindings available for Python 2 and 3.

Also, at the risk of being pedantic I just want to make a quick clarification about version naming. The new version of the CLF spec is version 3. This spec is part of the ACES 1.2 release. (In other words, it is not CLF version 1.2.)



This is just a friendly reminder for participants in the CLF Implementation group to review and add/edit/respond to this outline before tomorrow’s VWG call.

[DRAFT] CLF Implementers Guide