OpenColorIO icon indicating copy to clipboard operation
OpenColorIO copied to clipboard

Implement nanoColor prototype

Open doug-walker opened this issue 1 year ago • 0 comments

This is a collaboration between OpenUSD, MaterialX, and OpenColorIO.

OpenColorIO nanoColor is a light-weight version of OCIO that has no external dependencies. It is aimed at applications requiring basic color management in resource-constrained settings, such as running in a web browser or on a mobile phone.

NanoColor does not support custom config files or LUTs like full OCIO. Several config files are built into the library itself and these provide complete implementation of ACES color management. In addition, it's possible for clients to copy and edit the built-in configs to suit their needs. This includes the addition of custom color spaces.

NanoColor uses the same underlying transform chain optimization and CPU and GPU rendering paths as full OCIO. For developers, working with either nanoColor or full OCIO is very similar. The build process uses the same CMake set-up, though there are no external dependencies used in nanoColor mode.

The nanoColor API is virtually the same as the full OCIO API, though a few functions have been removed in alignment with the feature set. For example, there are no functions related to uploading texture LUTs to the GPU, since there is no texture usage in the nanoColor GPU path. All supported transforms have a closed-form invertible analytic representation that does not require LUTs.

A developer may choose to compile OCIO as nanoColor via a CMake flag.

doug-walker avatar Jul 20 '24 00:07 doug-walker