Impasto discussion

Matthew Woehlke mw_triad at users.sourceforge.net
Fri Jul 9 18:44:59 CEST 2010


JL VT wrote:
> So far the way that makes the most sense to me, is to store impasto
> information as an optional sublayer attached to the normal layers that
> the user is accustomed to use.
>
> As the attached diagram explains, when the user stacks many layers,
> what's visible to him is the OVERLAP of the layer's colors, while,
> intuitively, a stack of impasto layers should look like the SUM of all
> the thickness in each layer.

Unfortunately it's not that simple. While that is indeed the naive 
approach used by e.g. Painter (and certainly one of the easier ones to 
implement), if you are going to properly implement layered impasto, you 
need some sort of concept of filling and/or smoothing. That is, painting 
impasto needs to consider the existing impasto, and not just on the 
current layer.

This really only works "well" with a single layer. I want to think it 
may be possible to incorporate not just height, but also filling and 
smoothing information, but, at best, I expect that is hard. (And if you 
REALLY want to do it right, you need to account for smearing as well.)

An alternative could be to go back to a real life analogue. Layers on 
their own, as a real life analogue, would consist of sheets of perfectly 
transparent canvas (we'll say it is glass) stacked on top of each other. 
The same could be done with impasto; instead of perfectly flat pigment 
on your glass, you are now talking about various heights of pigment as well.

Note that the best way to represent this is probably not to combine 
impasto at all, but rather each layer's impasto is distinct to that 
layer. Comopsiting then consists of first compositing the respective 
impasto layer for each pigment layer, and then compositing those 
results. (This model would also most closely follow the existing layer 
model if impasto is treated as a sub layer. Although I'm inclined to 
think that's a bad idea, for precisely that reason; impasto as a 
sublayer makes it more difficult I think to compose impasto layers 
outside of the method described in this paragraph.)

BTW, Painter offers multiple choices for how to composite impasto.

Anyway, those are my thoughts. Note that my objection to simply adding 
impasto layers is based on actual experience with this method in 
Painter. It really doesn't work out right, since that's not how paint 
works in real life. Independent impasto (doing impasto for each layer 
and compositing the result) is actually I think better in most cases, 
although Painter doesn't do a very good job addressing edge artifacts 
with such a system. (That said, I believe Painter simply overwrote the 
impasto information of lower layers with that of upper layers, rather 
than rendering the impasto on each layer and compositing the results. 
That technique has obvious problems, since it effectively amounts to 
carving an alpha-mask-shaped hole in the underlying layers' impasto, 
rather than letting the layer as a whole float above the layers beneath.)

I would make two suggestions. First, as Dmitry suggested, impasto should 
be an additional channel, not a separate layer. Second, consider doing 
the initial implementation as suggested, i.e. render impasto for each 
layer before layer composition. After that you can consider different 
impasto composition modes. That should be good enough for a first 
implementation. The "fancy stuff" (making it interact with the impasto 
of previous layers) can be added later.

One other thing, in case it wasn't obvious, I would ideally want to be 
able to choose the composite op for impasto (when using composite and 
not 'render first') independently of the pigment composite op.

-- 
Matthew
Please do not quote my e-mail address unobfuscated in message bodies.
-- 
ENOWIT: .sig file temporarily unavailable



More information about the kimageshop mailing list