future of hdr colorspaces
Boudewijn Rempt
boud at valdyas.org
Thu May 31 09:58:12 UTC 2012
Right now, HDR colorspaces are implemented in the OpenCTL based ctlcs.
I've recently added the erase composite op those, but finishing those
colorspaces will be a lot of work.
If we want to make Simon and his colleages happy we need HDR painting,
though. Recently Cyrille suggested to check how easy it would be to
use LCMS's new floating point support to re-use our existing lcms-based
template classes to support HDR painting.
I've created a test rgbaf32 colorspace in the
calligra/pigment-lcms2_rgbaf32-rempt branch. It seems to work fine. I'm
not sure whether the performance is better or worse than ctlcs; it's a bit
slow for sure.
I'm also not sure about the way forward, both approaches have their pros
and cons.
LCMS2:
* doesn't support the "half" (f16) format, so we would have to convert to
full 32 bits float on loading half-based exr files, and convert back on saving,
plus we double memory requirements.
* suppors only a few profiles, though the default linear scRGB seems to
work fine.
* it would be easy to just create lab, xyz, gray and cmyk f32 colorspaces
like the rgb one I just did.
* it also supports f64 -- might be handy...
* all existing transformations are supported, as far as I can tell, so all
filters work
CTLCS:
* Cyrille said he wanted to redo the syntax for the composite ops, which
should make it easier to write new composite ops. But that's not done,
and the set of composite ops is too small
* color transformation generally use the fallback mechanism, which means
that applying a filter removes all the extra precision
* but: supports half (f16), so that's good for memory consumption and
speed.
* I'm not sure, but it feels a bit faster perhaps?
-------------------
In general, there are quite a few hdr painting bugs we need to fix:
242505 Krita converts an image from hdr to lab and back when applying a KisColorTransformationFilter-based filter
288719 16 and 32 bits float : Channels disable and lock don't work
288714 16 and 32 bits float : Layer "lock" when moving exposure
288722 16 and 32 bits float : Many filters don't work
288713 16 and 32 bits float : Multiply and other blending modes don't work
288716 16 and 32 bits float : No way to select high range colors with current color selectors
Oh, and studios seem to be using a third color management thingie:
OpenColorIO (http://opencolorio.org), but I haven't really looked into
that yet.
Boudewijn
More information about the kimageshop
mailing list