W3C home > Mailing lists > Public > www-svg@w3.org > July 2012

Re: Compositing math in SVG

From: Rik Cabanier <cabanier@gmail.com>
Date: Sat, 28 Jul 2012 12:52:45 -0700
Message-ID: <CAGN7qDCOr0VTLGKxB1nPyEKm3-Rv1iCZKc6GO0wf6Gbz+DM-Qw@mail.gmail.com>
To: Calculemus <calculemus1988@gmail.com>
Cc: Dirk Schulze <dschulze@adobe.com>, "steve@fenestra.com" <steve@fenestra.com>, "www-svg@w3.org" <www-svg@w3.org>
Let's do the math!
For an example, take a pixel that is RGB(0,1,0,.5) that is on top of
RGB(1,0,0,1) with a multiply blend mode. (This is how photoshop/gimp are
treating your example)

First you alpha composite the pixel with its backdrop, so:

co = Cs x s + Cb x b x (1 - s)

   = RGB(0,1,0) x .5 + RGB(1,0,0) x 1 x (1-.5)

   = RGB(.5,.5,0)

o = s + b x (1 - s) = .5 + 1 x (1 - .5) = 1

Now you blend this:

B(Cb, Cs) = Cb x Cs = RGB(.5,.5,0) x RGB(1,0,0) = RGB(.5,0,0)

Feed this into the full compositing formula:

c0 = s x (1 - b) x Cs + s x b x B(Cb, Cs) + (1 - s) x b x Cb

   = 1 x (1-1) x RGB(.5,0,0) + 1 x 1 x RGB(.5,0,0) + (1-1) x 1 x RGB(1,0,0)

   = 0 + RGB(.5,0,0) + 0 = RGB(.5,0,0)

Now take a pixel that is RGB(0,1,0,1) that is on top of RGB(1,0,0,1) with a
multiply blend mode and alpha of .5. (This is how you are doing the math)

First you blend this:

B(Cb, Cs) = Cb x Cs = RGB(0,1,0) x RGB(1,0,0) = RGB(0,0,0)

Feed this into the full compositing formula:

c0 = s x ((1 - b) x Cs + b x B(Cb, Cs)) + (1 - s) x b x Cb

   = .5 x (1-1) x RGB(0,1,0) + 1 x RGB(0,0,0) + (1-.5) x 1 x RGB(1,0,0)

   = RGB(0,.5,0) + RGB(0,0,0) + RGB(.5,0,0) = RGB(.5,.5,0)

Notice that in the first example, you have to composite twice.

Rik

On Fri, Jul 27, 2012 at 4:44 PM, Calculemus <calculemus1988@gmail.com>wrote:

> Rik,
>
> 1. "Where is the alpha coming from? Is it already in the image that you're
> applying blending to?"
>
> I created the images A and B in Photoshop, A has opacity
> 75% and B has 100%, so the alpha is coming
> from the images yes.
>
> 2. "If so, you need to alpha blend with the background first and then
> blend."
>
> You mean alpha blend the top image A with bottom/background image B?
> And then blend with...? I am confused, so I am not supposed to use that
> formula?
>
> Thanks
>
Received on Saturday, 28 July 2012 19:53:13 GMT

This archive was generated by hypermail 2.3.1 : Friday, 8 March 2013 15:54:51 GMT