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