2015-04-20 7:04 GMT+02:00 Gez <listas@...3059...>:
It would be a huge benefit for artists if all the compositing and color blending was done in linear RGB, then gamma-correct. Unfortunately, as you just pointed out, 8bpc is inadequate. The first time I saw the property in SVG that Tav mentions, it called my attention. It looked like somebody finally wanted to move away from the legacy 8bpc compositing in sRGB gamma and do the right thing, but I couldn't find more information about it. Is there some consensus about switching to linear compositing for the web? That would be great. And if that's the case. What's the stance of inkscape developers about it? Have you ever discussed about that possibility? Moving to higher bit depth would not only allow linear compositing, but also better gradients (there is at least one long standing bug report about banding in gradients), among other things.
Speaking for myself - I would immediately move to linear compositing, but the problem is that most of the compositing is actually done in external libraries (Cairo, Pixman) that don't have support for anything other than 8bpp sRGB color formats.
There are basically two possible paths to get linear RGB compositing: a) Add 16bpp formats to Pixman and Cairo. b) Port Inkscape to a rendering library that does support higher bit depths, such as GEGL.
a) requires things which are partially beyond our control, while b) is a very big project. For example, GEGL doesn't do SVG-compliant stroking, so we would first need to write an SVG-compliant path stroker. (There is some work on this already, but AFAICT it doesn't support dashing.)
I think going the b) route will be more beneficial in the long run. Ideally we should support multiple pluggable renderers.
The transition seems complicated, though. If inkscape moves to linear compositing, then browsers and SVG viewers should move to linear compositing as well, otherwise there would be mismatches in the rendering appearance.
Fortunately SVG has the CSS properties color-interpolation and color-interpolation-filters that allow you to specify what you want. Almost no-one supports them yet, but the migration path is already laid out.
Regards, Krzysztof