OpenColorIO icon indicating copy to clipboard operation
OpenColorIO copied to clipboard

Adsk Contrib - Adding color space attribs: interop_id, amf_transform & icc_profile_name

Open cozdas opened this issue 6 months ago • 6 comments

  • Addressing the issues #1975, #2152 and #2153
  • Bumped the config version to 2.5
  • newly added attributes require v2.5 config both for serialization and de-serialization and will throw if they appear in older configs.
  • Hardened multiple existing functions against null parameters. Previously those functions were crashing if null is passed, as assigning null to std::string is undefined behavior.
  • Expanded tests to some affected functions' unit tests to include null passing. Setters will take null as empty string. compare functions will throw.

cozdas avatar Jun 08 '25 05:06 cozdas

I'm extremely curious to hear if @cozdas feels like the copilot review comments are helpful and correct.

lgritz avatar Jun 09 '25 16:06 lgritz

Not a fan of seeing all those interchange attributes stuffed at the base level of the ColorSpace transform. Feels like a lot of pollution induced by secondary non-critical information. Could we consider them to be nested in a new bag-like field, e.g.:

  - !<ColorSpace>
    name: raw
    family: raw
    equalitygroup: ""
    bitdepth: 32f
    description: Some text.
    isdata: true
    allocation: uniform
    interchange:
        interop_id: foo
        amf_transform_id:
            bar
            baz
        icc_profile_name: bam

KelSolaar avatar Jun 09 '25 19:06 KelSolaar

I'm extremely curious to hear if @cozdas feels like the copilot review comments are helpful and correct.

Do we have an idea on the associated cost?

remia avatar Jun 09 '25 20:06 remia

I'm extremely curious to hear if @cozdas feels like the copilot review comments are helpful and correct.

Not too bad, it caught a valid issue and a typo. For this one the signal to noise ratio was not too bad but I'm curious to see it in a more involved PR. Sometimes this "vibe coding" is eating more time that it saves.

cozdas avatar Jun 10 '25 03:06 cozdas

Do we have an idea on the associated cost?

Nothing, this is just a feature of GitHub.

Or did you mean some metaphorical cost to the world or our souls or something?

lgritz avatar Jun 10 '25 05:06 lgritz

Nothing, this is just a feature of GitHub.

Or did you mean some metaphorical cost to the world or our souls or something?

Good to know, just wanted to check whether or not it was on a shared ASWF budget.

remia avatar Jun 10 '25 08:06 remia

Not a fan of seeing all those interchange attributes stuffed at the base level of the ColorSpace transform. Feels like a lot of pollution induced by secondary non-critical information. Could we consider them to be nested in a new bag-like field, e.g.:

  - !<ColorSpace>
    name: raw
    family: raw
    equalitygroup: ""
    bitdepth: 32f
    description: Some text.
    isdata: true
    allocation: uniform
    interchange:
        interop_id: foo
        amf_transform_id:
            bar
            baz
        icc_profile_name: bam

When looking at the ACES configs, I found what was bothering me but could not put my finger on: AMF (amf_transform_id) is something very specific to ACES, as much as I like ACES and the work we do there, I feel like this is probably too much to have an attribute added to OCIO just to support ACES. I already felt that the hardcoded ACES interchange role was too much and this is continuing the trend. We should strive for agnosticism as much as possible.

KelSolaar avatar Aug 04 '25 06:08 KelSolaar

Hey Thomas - it's a good point you make around being agnostic, and one we definitely should keep in mind.

We definitely put our eggs in the ACES basket for configs, but the library is less so (other than the fact that all the ACES transforms are built-in). To me, I was looking at this as a way to help us clean up the configs a bit, make it easier for folks using AMF & OCIO to operate. It's not a required attribute, so it's not locking anyone into an ACES workflow that doesn't want to be.

However, your point is fair and we should discuss at the TSC today.

carolalynn avatar Aug 04 '25 16:08 carolalynn

I propose we move the sub-thread about AMF IDs to this issue.

doug-walker avatar Aug 05 '25 03:08 doug-walker

Per the discussion at the 2025-08-25 working group meeting, the interop_id will stay as is but the amf_transform_id and icc_profile_name will move under a sub-group. The items in the sub-group will all use a generic getter/setter that takes an attribute name.

In addition, we are looking at allowing the interop_id to be written in profile versions >= 2.0.

Cuneyt will be making another commit in the coming days with these changes.

doug-walker avatar Aug 27 '25 02:08 doug-walker