Re: [Gimp-developer] Some blend modes break in unbounded mode sRGB

El dom, 13-04-2014 a las 19:25 +0200, Øyvind Kolås escribió:
On Sun, Apr 13, 2014 at 7:17 PM, Michael Natterer <mitch gimp org> wrote:
On Sun, 2014-04-13 at 13:01 +0000, pippin gimp org wrote:
Thus there is during processing no predetermined format; as soon as some
processing is done on the pixels from the storage format of the raster layers
in GIMP; it is quite likely that the format of the pixels are "RaGaBaA float";
though it might be quite a few others.

Um? I don't see much premultiplied processing around.

It's mostly "RGBA float" or "R'G'B'A float" isn't it?

gaussian-blur, whirl/pinch, scaling, warp tool, pixelize, and most
compositing modes are using "RaGaBaA float" if they used "RGBA float"
instead their innerloops would have to take alpha weighting into
account to avoid color bleeding from transparent pixels into opaque


I can see the associated/unassociated alpha and linear/gamma switches
are in place and I think all of it makes sense (maybe there are places
in GIMP where those switches don't work properly yet, but that's not the

What I still can't understand is how unbounded values will be managed in
some RGB operations that don't work well with negative values, and none
of the answers in this thread seem to clarify it.

There are several examples, but the simplest situation I can think of
are the multiply/divide blend modes.
A simple operation like multiplying cyan*red (0,1,1*0,0,0) breaks when
those red and cyan comes from a wide-gamut colorspace and have been
converted to unbounded sRGB.
I tried with a wide-gamut profile where red and cyan converted to
unbounded sRGB had these values:
RED: 1.6548, -0.1319, 0.0052
CYAN: -0.6548, 1.3290, 0.9948

Note that those values are perfectly complementary and if you add them
together you'll get white as expected, but the result of multiplying
them goes completely bonkers:

-1,0835 -0,1492 0,0051

That should be black. Neither clamping or clipping will give black.
Ok, it's pretty close to black if you clip the result, but it still has
a little blue that shouldn't be there, and that will accumulate through
the composite.

How are cases like these managed using unbounded sRGB? multiply/divide
are basic operations that are present in several blending modes.
Is this a problem or I got it all wrong?

If this is a stupid question please let me know so I stop asking :)


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]