To avoid confusions I will explain the different levels of colorspace conversion occurring in Natron.
The following expects that the OpenColorIO-Configs are found by Natron. (If you see the choices in input/output colorspaces of a Reader/Writer this is ok). If the OCIO config cannot be found, the color-space conversion on the reader/writer will not be correct. You can specify the OCIO config only for 1 Reader/Writer via the parameter "OCIO config", but Natron allows you to specify the OCIO config across the whole application in the preferences panel. In the OpenColorIO tab, select the OCIO config file. By default we use the config OpenColorIO-Configs/blender/config.ocio
By default Natron bundles with some OCIO configs which are:
- nuke-default
- blender
- Aces
- spy-anim
- spy-vfx
By default, if found Natron will use the config "blender" in the preferences, hence all readers/writers will use this config.
If Natron fails to find these bundled configs this is probably because they are not located where Natron expects them.
- On Linux Natron looks in /usr/share or ../share relative to the binary by default. You can change it by pointing to the right config in the preferences.
- On MacOSX Natron looks in ../Resources/ relative to the binary. If you're using the pre-compiled version of Natron (downloaded from our website) it should find it alone.
- On Windows it is the same as MacOSX.
Now let's explain how colorspaces are handled in Natron...
First of all there's the Reader node which converts from the image file's colorspace (e.g sRGB for a jpg) to linear 32 bits fp data.
This can be controlled in the Reader node with the "Input colorsapce" and "Output colorspace".
If you're reading a jpeg, then you can safely assume the colorspace is sRGB for the "input colorspace".
Regarding the output colorspace you should always set it to linear unless you know what you're doing. If you set it to something else than Linear then Natron's processing will be done in the colour-space you set and it can be mathematically wrong.
Now the opposite is done in the writer node. The input colorspace is the color-space of the image within Natron. You can assume this is almost always 32bits fp linear colours, so leave it unchanged. The output colorspace specifies what will be the colorspace of the image in the output file. Generally the write node will choose it right for you (e.g sRGB for jpeg, linear for EXRs) , but sometimes it can do it wrong, so double check that this is exactly the output colorspace you want.
And now some more complexity is added on top of that:
Generally all processing , end to end , in Natron is done in linear 32 bits floating point. However some plug-ins in the middle of the workflow might not support 32 bits floating point processing, so we're forced to convert the images to something the plug-in can support , e.g 8 bits.
When doing such conversion Natron wil use the parameters of the project to convert to the appropriate color-space, according to the target bit depth. For example if we're in 32 bits and Natron needs to convert to 8 bits for some plug-in, then we will convert from Linear to sRGB (assuming the project settings are left unchanged, that is Linear for 32 bits, sRGB for 8bits and Rec709 for 16bits).
By chance after your plug-in that only supports 8 bits, if you have only plug-ins that can also support 8 bit processing, the output of the graph will be 8 bits, and it will be in the color-space of 8 bits images (i.e sRGB), thus you'll have to be careful in your write node at the end of the graph to the color-space of your input data!
In the case that below your 8bit plug-in only you have another plug-in that doesn't support 8 bits processing, Natron will do the same and will convert from 8 bits to XX (insert the bit depth of the plug-in that doesn't support 8bits).
There're very FEW plug-ins out there that don't support 32 bits fp processing , so you should assume all the processing inside Natron is 32 bit fp and in the color-space defined in the project (i.e: Linear by default).
In the general case you have nothing to do and Natron should correctly guess all the color-spaces for you, except in some tricky cases.
You generally have to check that your Reader node reads in the right color-space (i.e the Input colorspace parameter is set accordingly) and that your Writer nodes writes in the right color-space (i.e the output colorspace parameter is set accordingly), that's all.
Now there's a last thing: The viewer colour-space (adjustable from the viewer interface).
This is the color-space into which data will be converted to be displayed on the viewer. You should generally not change this, unless you know what you are doing. This can be helpful for example to watch the viewer on a monitor in Rec709 color-space.
Hope this helps,
Alex