Well, i have a couple of considerations.<br><br>Will this &quot;impasto&quot; information be somehow &quot;derived&quot; from real layer data? Or it&#39;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, &quot;impasto&quot; information is a property of every pixel, right? What is the reason in special layers, then?<br>In my opinion, this special &quot;property&quot; of every pixel should go to a special colorspace with a special channel, named &quot;thickness&quot; or &quot;height&quot;. 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&#39;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&#39;t do two separate updates for one change (traversing the layer stack with compositing is quite expensive operation). More than that, adding &quot;special&quot; layers to the stack will make UI really weird. The user will have to answer a few quite non-intuitive questions: &quot;how do Adjustment Layers and Masks (e.g. blur mask) will effect to this &quot;special&quot; impasto layer?&quot; Or &quot;what will happen if you change the parent of an impasto layer?&quot;<br>
<br>+ and you needn&#39;t change the merging system. Yeah, technically, it is possible to achieve this with a special Walker, but... i wouldn&#39;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 &quot;thickness&quot; channels.<br>
3) Then you need to add ability for paintops to paint on this additional channel. I don&#39;t think it&#39;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 &quot;height&quot; 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>