- From: Rik Cabanier <cabanier@gmail.com>
- Date: Tue, 22 Nov 2011 21:06:49 -0800
- To: Alex Danilo <alex@abbra.com>
- Cc: Cyril Concolato <Cyril.Concolato@cisra.canon.com.au>, "www-svg@w3.org" <www-svg@w3.org>, "public-fx@w3.org" <public-fx@w3.org>
- Message-ID: <CAGN7qDAn+Bqs0wg-bN1=0jLMw83Whn+pxp9nMRcU5+HMf57jEg@mail.gmail.com>
On Tue, Nov 22, 2011 at 3:38 PM, Alex Danilo <alex@abbra.com> wrote: > Hi Cyril, > > --Original Message--: > >Hi Alex, > > > >Thank you for your answer. See my comments below. > > > >-----Original Message----- > >From: Alex Danilo [mailto:alex@abbra.com] > >Sent: Tuesday, 22 November 2011 1:01 PM > >To: www-svg@w3.org; public-fx@w3.org > >Subject: RE: [css-compositing] some proposals > > > >-- > >NB: Sorry for the spam www-svg (note to self: debug mailer agent;-( > >-- > >Hi Cyril & Rik, > > > > Sorry I've been a bit busy of late so following up now. > > > > First, one thing that's been missed is that in Porter-Duff the > alpha channel represents a mask. The crux of the original paper is > representing what happens with shape overlap on a pixel and so in the > compositing spec. we reproduce the 'square with 4 areas' > >that has the top section multi-coloured, the left yellow, the right blue > and the bottom white. > > > > Those areas represent 0, A, B, and AB in the original P-D paper. > > > > In the spec. further down where it says: > >"The operation used to place objects onto the background is as follows" > > > >there are these equations: > >Dca' = f(Sc, Dc) × Sa × Da + Y × Sca × (1-Da) + Z × Dca × (1-Sa) > >Da' = X × Sa × Da + Y × Sa × (1-Da) + Z × Da × (1-Sa) > > > > The Porter-Duff mode chosen affects X, Y, and Z. > > > > The blend mode is f(Sc, Dc). > >[Cyril] So I understand that the proposal to split the modes into two > parts (P-D and blending) is purely syntactic sugar and it does not change > the model, right? > > Correct. > > The model doesn't change but it's slightly more than syntactic > sugar. By separating out the blending from the P-D you get more > combinatorial possibilities that you couldn't do nicely if it > was one property. > > > So for example if you chose blend-mode:multiply, comp-op:src-in; > you would get: > > > >f(Sc,Dc) = Sc × Dc > >X = 1 > >Y = 0 > >Z = 0 > >[Cyril] According to the current draft: src-in is f(Sc,Dc)=Sc and X=1 > and Y=Z=0. Multiply is f(Sc,Dc)=Sc x Dc and X=Y=Z=1. So you are saying that > when you use both the compositing and the blending modes, you keep the > value of f(Sc,Dc) from the blending and you keep the X, Y, Z values from > the compositing mode. It make sense but it's not obvious. I would have > thought that you would somehow compose them. Anyway, I think that if we > split the spec, the merging of equation needs to be documented. > > Yes. > > It's not obvious since there was only one property before. > So I agree it needs to be documented, and in fact it's > pretty simple once you work out what's really going on. > > Rik followed up with a similar message just now and says: > > -- > The model is that you calculate the blended image first > (= f(Sc, Dc)) and then composite it with whatever mode was > specified. The current spec always assumes that you do > src-over with blending and that is changing. > So in the new spec: > - multiply becomes f(Sc,Dc) = Sc x Dc (no more x, y, z) > - src-in becomes X = 1, Y = Z = 0 (no more f(Sc, Dc)) > -- > > What he's really saying is that the AB (colored top section > of the diagram) is calculated as the blending step, then the > other areas are done using P-D. > > In P-D terms, the areas are _coverage_ over a pixel. The alpha > channel is a convenience masquerading as a shape channel. > > If you imagine that the source and destination are two triangles > that overlap the pixel - that is what is being shown. i.e. the > area covered by source consists of a section of the pixel where > there is no destination color, and a section where there is > destination color and a section where it doesn't overlap > the pixel. Same for the destination pixel coverage. > > The Porter-Duff terms refer to the part of source that has no > overlap and so no blend is possible with the destination (the > left yellow triangle); the destination color that has no > source overlapping it (the right blue triangle); the area > not covered by either source or destination (the white area > at the bottom); and finally the area covered by source and > destination color where blending of the colors happens (the > multi-colored triangle at the top). > > So, what the blend modes do is alter the function of the > color mix in the top triangle and that's it. There really > isn't a conceptual first blend then second 'src-over' or > whatever since there is only one color channel which ends > up getting input from the blend function and the areas > of source and destination that don't intersect. > > Clear as mud hey:-) > > I'm sure we can turn this discussion into something > that is readable by general developers since that's > what would be ideal. > Yes, once we figure out how it works, the hard part of explaining it in layman's term will begin :-) It would be nice to hear what the browser vendor think of the spec. I'm intending on defining a CSS description for the compositing spec as well. The keywords will most likely translate directly from SVG to CSS. Rik
Received on Wednesday, 23 November 2011 05:07:26 UTC