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) then: 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. > > Best, > -- Bill >