Special merge down over several layers.
Open, WishlistPublic

Description

We discussed this at the sprint.

Basically if we have our 20+ islands from colorise-interactive/lazy brush
We want to paint on all of them, so add a huge canvas-wide gradient for a lightsource, for example, and then merge that down in a special way so that the merge down happens on all layers with visible pixels, yet we don' t want to loose our islands through merging.

woltherav updated the task description. (Show Details)
woltherav raised the priority of this task from to Wishlist.
woltherav assigned this task to dkazakov.
woltherav added subscribers: woltherav, Deevad.

A simple idea for interface with the user: simple paint, draw gradient (or use filter) directly on groups.
Then the effect hit all the children layers.
(but I guess it can be super-mega-impossiblo-difficult on the code side)

Speaking truly, I don't fully understand the task. There are several options possible:

  1. We make Merge Down Keep Source action, that merges the layers down, but keeps the original layers (just makes them invisible)
  2. Implement something like @Deevad suggested, though, yes, it would be really hard to do.
  3. Just let the user group these layers and draw in a separate layer above them using some complicated Blending modes, like Overlay, Addition or Multiply.

Probably related to T1587. Could be solved by locking the source layers, pressing Ctrl+E. Then a merged copy would be created, but the layers became invisible.

No it is not related. We did discuss this at the sprint, you seemed to think it was feasible back then(calling it something kin to 'reverse of the alpha inheritance' but I might be wrong).

It's like some kind of solution to multi layer painting. Multi layer painting would be painful to implement, but having a single special merge down action for it would simplify things.

So basically, you have a group of layers, and then a top layer. The top layer gets it's data merged down in such a way that it 1. doesn't destroy the group of layers(by flattening them, or so), and 2. respects the alpha of the group of layers, so only the color data is merged down.

This is not 'keep islands but hide them' because that implies the result of the merge down isn't on the separated layers.
This is also not a blending mode, it's a merge down action.
Deevad's UI solution is interesting, but the idea of making it a special merge-down action on a plain layer is that it just simplifies the problem to a single merge down action and we don't need to implement weird things for maximum flexibility.