ACES working space

Brecht Van Lommel

Hi all,

In trying to make functions like blackbody() work correctly with ACES working spaces, I found no way in the API to do it. There is ShadingSystem.attribute("colorspace", ".."), which seems to only support a fixed list of color spaces defined in opcolor.cpp. That list does not include ACES.

There's a few solutions I can think of:
* Add ACES2065-1 and ACEScg to the list. Easiest solution but not the most future proof.
* Add a method to provide custom chroma values. (Or a 3x3 XYZ -> RGB matrix which is what I happen to have available already and seems simplest to extract from OpenColorIO.)
* Lookup the specified "colorspace" name in the OpenColorIO configuration and use the "aces_interchange" role to figure out how that color space relates to CIE XYZ. Possibly it could default to the "rendering" role in the config, but this would be breaking API compatibility.

I'm willing to contribute a patch for this, but would like to know which solution would be preferred, or if I'm missing an existing solution..