On Monday 20 September 2004 11:29, William Skaggs wrote:
> Bear wrote:
> > Assume there are four layers, all of which are in Normal mode and
> > grayscale. for a specific pixel in each layer,
> > Their intensity and alpha values(mapped to [0,1]) are
> > i1,a1
> > i2,a2
> > i3,a3
> > i4(background)
> > the merged intensity is
> > ((i1*a1+i2*(1-a1))*a2+i3*(1-a2))*a3+i4*(1-a3) am I correct?
> > Thanks!
> I hope not. The proper expression should be
> a1*i1 + (1-a1) * (a2*i2 + (1-a2) * (a3*i3 + (1-a3) * i4)).
Peering into the code, it is actually simpler than that. The GIMP
always treat layers in groups of two, starting at the botton
It would do:
new_i3 = i3 * a3 + i4 * (1 - a3)
new_i2 = i2 * a2 + new_i3 * (1 - a2)
and so on. The finalr esult is like above - but it is easier to think
on it 2 layers at a time.
> That is, you have the expression reversed. With your expression,
> the background could show through even with opaque layers above it.
> The best way to think about it is that the projection at layer n
> is given by the recursive formula
> P(n) = a_n * i_n + (1 - a_n) * P(n-1),
> where the background is layer 0, and P(0) = i_0.
> -- Bill
Gimp-developer mailing list