Well, i have a couple of considerations.<br><br>Will this "impasto" information be somehow "derived" from real layer data? Or it'll be written directly by paintops?<br>Why do i ask? If it can be calculated from the layer itself, then it can be represented by the mask of the layer (somehow).<br>
<br><br>Actually, i think, "impasto" information is a property of every pixel, right? What is the reason in special layers, then?<br>In my opinion, this special "property" of every pixel should go to a special colorspace with a special channel, named "thickness" or "height". There can be a problem, because impasto-capable colorspaces should be created for every meaningful colorspace, though it can be, i think, solved with some templates or whatever.<br>
<br>What are the benefits of this:<br>+ you needn't change paintop system to be capable to paint onto two(!) paint devices simultaneously. btw, it will be much more slowly, than writing to an additional channel<br><br>
+ you needn't do two separate updates for one change (traversing the layer stack with compositing is quite expensive operation). More than that, adding "special" layers to the stack will make UI really weird. The user will have to answer a few quite non-intuitive questions: "how do Adjustment Layers and Masks (e.g. blur mask) will effect to this "special" impasto layer?" Or "what will happen if you change the parent of an impasto layer?"<br>
<br>+ and you needn't change the merging system. Yeah, technically, it is possible to achieve this with a special Walker, but... i wouldn't do it, not for love or money! =)<br><br>drawback:<br>- you need to solve the issue with adding impasto for all the colorspaces<br>
<br><br>So what do i suggest:<br>1) You create a special colorspace (or colorspace template) that can hold one more channel for the height.<br>2) You modify, if needed, COMPOSITE_OVER and other operations of this new colorspace to make SUM of "thickness" channels.<br>
3) Then you need to add ability for paintops to paint on this additional channel. I don't think it'll be difficult -- you just need to modify a dab of the paintop.<br><br>/* by this moment, you will have a well-prepared projection with all the impasto information included */<br>
<br>4) Then you create a special filter, that will modify RGBA pixels of the projection according to information in the "height" channel.<br>5) Then you wrap this filter into a mask and hide (or not to hide... that is the question...) inside a root layer.<br>
<br>And that is all! =)<br><br>Who to contact:<br>1,2 - Cyrille<br>3 - Lukas<br>4,5 - me<br><br><br>-- <br>Dmitry Kazakov<br>