Unfortunately due to Nuke10 not allowing channel names which start with a number the 'spmask.1' and 'spmask.2' channel names will not translate potentially causing problems with the OpenDCX nuke plugins. We also discovered that channel reordering within the 'spmask' layer was also a possibility depending on the load order of the Nuke plugins - i.e. whether an exr is read before a DCX deep plugin is loaded, or vice-versa.
The original Deep Subpixel Mask paper from DigiPro2015 proposed these channel names:
spmask.1, 32-bit float (A-buffer bottom bits 0-31)
spmask.2, 32-bit float (A-buffer top bits 32-63)
spmask.3, 16-bit float (flag bits)
OpenDCX release 2.2.1 changed spmask.3 to better differentiate the A-buffer bits from the flag bits:
spmask.1, 32-bit float (A-buffer bottom bits 0-31)
spmask.2, 32-bit float (A-buffer top bits 32-63)
spmask.flags, 16-bit float (flag bits)
OpenDCX release 2.2.2 (March 1st, 2017) will have spmask.1 & spmask.2 changed to accommodate Nuke10's channel name restrictions, and the flags channel changed to 32bit float storing a bit pattern rather than a integer float value:
deepabuf.sp1, 32-bit float (A-buffer bottom bits 0-31)
deepabuf.sp2, 32-bit float (A-buffer top bits 32-63)
deepmeta.flags 32-bit float (flag bits & partial-spcoverage bits)
These names and pixel types are now defined in DcxChannelDefs.h.
* OpenDCX's standard-channel handler will automatically translate the older names into the new names (check out g_standard_channel_table[] in DcxChannelSet.cpp) so older exrs will still read in properly. When using DcxDeepImageOutputTile to write out an exr the new names get used by default.
* Any renderers currently outputting dcx data will need to be updated to the new names. Afaik only Houdini is currently capable of outputting dcx deep data.
* The best long-term solution for anyone wanting to use Nuke8/9 with OpenDCX 2.2.2 and a mix of old and new exrs is to modify the exrReaderDeep plugin to translate the older channel names into the new ones.