AcademySoftwareFoundation / OpenImageIO

Reading, writing, and processing images in a wide variety of file formats, using a format-agnostic API, aimed at VFX applications.
https://openimageio.readthedocs.org
Apache License 2.0
1.95k stars 583 forks source link

Roadmap goal: Clean up color management for OIIO 3.0 #4164

Open lgritz opened 6 months ago

lgritz commented 6 months ago

I think we should make sure that for OIIO 3.0 (i.e. this fall's release), we should fully align to the core color space nomenclature that OpenColorIO, MaterialX, and OpenUSD are gravitating toward, which is documented here: https://github.com/AcademySoftwareFoundation/MaterialX/blob/main/documents/Specification/MaterialX.Specification.md#color-spaces-and-color-management-systems

This means a few things, at least:

  1. We should decide once and for all if OCIO should be a required dependency of OIIO -- in particular, a new enough version to support the "built-in configs" -- so it can do most of the heavy lifting for us and 100% be confident we don't implement any color transforms differently than they do (because we'd always be using their code).
  2. We should support all of those names, both in implementation and documentation, for the color spaces they describe and be sure we're talking about them and behaving consistently with those other projects.
  3. If in (1) above we choose not to require OCIO, we should ensure we have fallbacks that let us properly transform between them. (We currently do a few special cases.)
lgritz commented 6 months ago

🎣 Mackerel! This would be a great task for somebody to take on who cares about this topic and being consistent in our treatment of color space names. It's not really rocket science in terms of requiring especially advanced programming skills, nor extensive knowledge of deep OIIO internals. The surface area of the code base that it needs to touch is not very large, but getting it right would have a big impact on user experience. Adding OIIO to the alliance of {OCIO, MaterialX, USD} all using these names consistently would be a good thing.

BrianHanke commented 6 months ago

I might be able to help with this! I'm knowledgeable about OCIO and I'm interested in making it more accessible and user friendly. I get by in C++ and Python but I'm not a pro developer by any means.

JGoldstone commented 6 months ago

Thanks for stating the problem; I think this came up earlier when I was in a four-day fugue going after a multithreading/multihost caching bug, and never went back, so now ... I can.