Here’s my 2 cents on this discussion, because I think there are two workflow reasons that were not mentioned in the thread by those advocating for the clipping mask approach.
Argument for using clipping masks as opposed to inherit alpha
For me, it is important to be able to access the mask directly from the top level and keep the group folded away. Usually I have multiple groups with their own clipping mask nested inside another group with clipping masks. This is because I want to be able to edit things quickly and don’t want to redo them. For rendering out things like floor plans and urban layouts (Archviz), I usually apply lots of filters and texture layers in Photoshop, because when I present these drawings, more often then not, the response is that there will need to be some changes. All I need to do is relink the base map (CAD drawing) and adjust the masks (for example to adjust where the pavement is). This procedural workflow (with masks on top) allows me to do my edits on a higer level without diving deep into the layer structure. Considering the vast amount of layers, the clipping mask approach becomes much more viable then as opposed to colouring and applying effects on drawn base layers for characters in my opinion. Parenting layers underneath a clipping maks makes it a breeze to swap threm out, just move the layers underneath a new parent and done. While this may not be a viable workflow in Krita now, I don’t see why it wouldn’t in the forseeable future actually
UI
Thing is, I want to see which layers contain content and which layers (or groups) are there for ordering/ masking. Mask layers are indented for parenting, but this also creates a visual clarity imo.
How much, if at all, does it hurt to be able to toggle indentation for clipping masks from the layer docker’s options? By adding the clipping mask arrow icon it could basically work both ways and serve those who would like the feature the way they see fit…?
For the typical clipping mask, I would prefer the indent to be more narrow. I could see that the “return arrow” would move to the left with indentaton applied (so it would fill the created margin in the UI), whereas without indentation it could be like your mockup “Clipping mask my mockup 1”.
Well explained and I fully agree. Clipping masks, the way they are used in PS (and other programs) have proven to be very effective {both functionally and visually). In Krita everything looks like a group which eventually will be very hard to work with when files get more complex. In other programs groups, masks and clipping masks have different visual representations which makes it easier to decode the layer structure. In Krita it’s rather easy to get lost in there as all those things look very similar.
I understand that such a change would be a huge undertaking. But I’m fairly certain that it will lead to a better work experience in the end.
That’s not the case imo, I find it very smart to have multiple mask, filter and selection layers this is were Krita far surpasses Photoshop. The only thing that has a workflow benefit is adding the clipping mask feature to support that workflow. Notice that this has the added benefit that you could clip vector shapes with another vector shape/ layer.*
So to sum up for me the advantages are:
Top level editing (so less digging in the layer stack)
Reusing a set of layers by moving them to another parent layer mask (so less digging to replace a mask at the bottom of a group)
Nested clipping masks are more easily discerned due to the indentation of clipped layers/ groups
It can be used for vector clipping purposes
The latter is particularly important when working from CAD created PDFs, copy a particular poly line, convert it to a fill and use it as mask. Yeah, yeah, Krita is a painting app, but it just has this much potential too
*That is if the vector tools were to be improved by having the objects within the layer displayed in the layer tree - though this is another discussion entirely. I’ve got plenty ideas on that though
I hope this discussion won’t be forgotten, I stopped using krita precisely because working without clipping mask makes everything more stressful, almost all programs have this function, even software much inferior to krita, all my artist friends complain about the lack of option in krita.
It took me a tiny bit to switch over my clipping workflow and thought process into the one Krita uses. But after doing that, I’ve personally never felt limited or restrained by the current method in any way.
I gave a quick read on the thread and i think we all agree the main issue is that alpha inheritance requires a group to work.
The main issues i can can take from this limitation is:
forces a workflow on the user that is different from what they are used to
forces a layer structure that can be unwanted
doesn’t allow for groups to be used just as organization
requires extra steps to setup
I think there is a issue though with overthinking the function as the thread went on. And by that i mean the different modes proposed.
Reading the thread We have the following modes being discussed
mode A: clip to just the layer below
mode B: clip to all layers within a group
mode C: clip to all layers below outside group
I don’t think mode C is needed at all. So i will ignore it.
The first issue i see is this idea that we would need allow the user to choose the mode, i don’t think it’s necessary. We can use context to use the correct mode.
If a layer is outside a group, clip to the layer below.
If the layer is inside a group make it behave like it already does with alpha inheritance. It’s contained inside the group
If you are clipping a group layer, it should clip to the layer below the group
If you are clipping a group inside another should behave how it already does.
If you have more than one layer clipped, they still should inherit from the base.
if a group is set to passthrough it should behave as the layers were outside a group ( can break the results if you have many groups inside one another and that’s completely fine, if the user doesn’t want that they should disable the function)
For interface i prefer the mockup Dima did.
The one that looks like we already have in fire alpaca/medibang and CSP. Because i think it’s much easier to identify the layer is clipped by the indication being on the left, also it takes less space than the arrows.
Also i would like to give an addendum, the option to adjust tree idention doesn’t solve the problem. I say this cause this discussion started before that was implemented and a lot of people point out one of the problems of using the group with alpha inheritance was the indentation. However there are other issues in forcing the use of groups.
As sometimes you need a project to be structured in a certain way, as we need to remember since krita allows the use of plugins maybe some people are using a certain structure to work with custom plugin either for exporting or other functions. As pointed before group should be able to be used as organization only with passthrough.
In a way this is all about simplification and flexibility and usability of the alpha inheritance.
No need for “folding clipping masks”( use a group for that) no need for the user to manually select the type of clipping they want.
I think tiar was on the right track with this:
Though i still have a bit of trouble fully understanding the explanation.
Mode C can already be achieved if the group has the pass-through option on, although that also affects the other layers inside.
That is not backwards compatible, it can make old files look wrong.
That prevents you from clipping to the layer below inside a group. I think it should be allowed.
Overall the points you wrote seem kind of arbitrary to me. At the end it seems more complex to me than having 2 differenciated modes.
I don’t see any problem with having 2 modes. At least the user could see a direct relation between the icon and what happens on the canvas. With your proposal I think they would end up confused why it behaves in different ways.
Have a image that can be used as inherit alpha base, and move to top of image, then set Destination In. Destination Atop is to be used in conjunction with Layer Style at times.
From what I understand, the requriement is to clip to the item below. The item below can be a single layer or a group. Having it clip to not just single layer below but group too, solves the use-case where current users would add multiple base layers. So to summarise the options in the settings page will have these two check boxes
Inherit Alpha behaviour
[ ] Keep legacy behaviour ( clips to composite of all things below)
[x] Clip only to layer or group below (new default)
Fair enough, what i meant is that things need to be simple to the user.
Maybe my points were arbitrary because i was considering adapting the current behavior and not fully understanding how it works. Though i think what i said still summarizes what it should have.
What i am against multiple modes is giving the ability to use both in the same file i think that will be complex and confusing ( at least that’s what I understand when you mentioned having a different interface). I think it should be a configuration setting and if you open a file that uses the other mode it changes to that or at least warns the user that it’s changing the setting.
Although that would force them to make an additional group. It’s like removing the need to create a group to simulate ps clipping mask, but adding the need to create one to simulate old krita’s behavior.
I don’t see the complexity, but maybe that’s just me. I see it this way:
Inherit alpha option makes the layer use the alpha of (being clipped by) the layers bellow. That’s a simple explanation.
The inherit alpha button (the same as is used now) would have 3 states: don’t inherit, inherit from layer bellow only and inherit from all layers bellow. If you click on the button the state rotates from one to the other. I also don’t see any complexity there.
The benefits I see in that approach are:
No new configuration needed.
PS’s clipping masks can be easily mapped to the “inherit from layer bellow only” mode.
You have krita style, PS style, or both styles for clipping masks. Saying two styles, or two modes, can sound complex. But they are the same, they operate in the same way, and the only difference is the number of layers bellow used to clip.
Backwards compatible.
It is not a disruptive change, users that don’t know the feature was added can still use krita as always, until they see that the button now has 3 states. Some tooltip in there can make them aware of the changes very easily. As I said, the two modes operate in the same way, so to someone that knows what alpha inheritance is, telling them that one mode just works as always and the other uses only the layer bellow for clipping, I think it is straightforward and simple enough. New users will have to spend time working out what alpha inheritance is, just like now.
Yes this is for people who need the new behaviour for people who need the old behaviour they have it in the option. People wanting the new behaviour make group to have mutliple base layer anyway.
Regarding having the need to add a group I think this scenario of needing multiple base layer happens quiet less often. The scenario where people need it to clip to layer or group below is more in my opinion. Nevertheless you have group this way or the other. We are just removing the need to group every-time and making it required for just some use cases. it is better to make group some times than every time.
I emphatically agree on this. I’ve long since adjusted my layer setup to accomodate Krita’s requirements, but in other software I routinely had numerous layers with only 1 or 2 layers clipped to each individually, a workflow which I see very often. Clipping to multiple layers at once is comparatively much rarer.
As a new user, the inversion of grouping requirements was quite jarring, needing so many groups of 2-3 layers just for that common clipping arrangement.
compare this to you click the button and the layer is clipped the way you want and you will see it adds complexity, as you would need multiple clicks to get the mode you want and also you would need to know what each mode does.
Not to say how to defferentiate between them? a icon change? for that the icon would need to have a good readability.
I just dont see being able to rotate between modes as something needed as the way i see these are 2 excluding workflows.
I like this idea, especially that it doesn’t break current workflows or backwards compatibility. There are times where I’d like to inherit just 2 layers together, and currently I have to group them, this would be a good ‘new’ feature without jeopardizing the usefulness of the ‘old’ method.
Yes, technically. More features can mean more confusing for more people. But you have to think about the learning curve as well and add/subtract points for it. I’d argue right now it’s even harder than if this was implemented. New users currently go something like this:
New users tries Krita
Looks for ‘clipping masks’.
They imagine it looks like the layer is indented, which means it’s clipping onto the one layer below, because it’s what they’re used to.
They can’t find it
Are forced to, the first time using the program, learn an entirely new method of clipping.
With the new feature, especially if it’s the first mode that shows up when toggling between the alpha states:
New users tries Krita
Looks for ‘clipping masks’.
They click the alpha button
The layer indents and looks/works exactly like they’re used to. Problem solved.
Later on, they may discover the more ‘advanced’ mode by accident. Which is perfectly fine, they already have their foot in the proverbial door. Now they’re seeing Krita as powerful and deep, with tools they don’t even know about, rather than unforgiving, steep, and demanding.
Sorry but i still think being able to mix both would be something not used much if at all. like i said i see this as 2 different workflows. The new one doesnt block you from using it inside groups. from what i understood right now what the current method permits that other software doesnt is you being able to inherit alpha from more than one layer inside a group, which honestly i think not many people even notice.
Though my issue is more due to adding more complexity on addin a clipping mask in adition to people having to know what which mode does and multiple click to change the mode, what about turning it off? would there be a way to quickly turn it of or we would need to click more than once for it. May seem like i am nitpicking and i probably am. But i think this is necessary to see if there are any issues with this approach, the good thing about clipping masks is that they are easy and fast to set up and this should still be true. thats why i ask:
is really necessary to have both at the same time?
would people not only gravitate to one type of workflow?
this should also be taken into consideration on the learning curve you proposed cause if someone tries to disable it and it changes mode it might be a bit annoying
One issue I find with this approach: I imagine that the setting applies to each new image that is created. It would have to be stored in the image, because if you open the image in another krita that has the other option checked, you still want the inherit alpha behavior of the particular image to not be changed. Now you have the two modes mixed up. Some images behave in one way and others in another way. Then, if you share the file with other artist so that they can work on it, they are forced to one style, even if they prefer the other. They can’t use their preferred style for alpha inheritance. And they can’t change it, because that would change how the image looks.
Yes, if the sequence is “don’t inherit”->“layer bellow only”->“all layers below”, and you are on “layer bellow only”, you need 2 clicks, that don’t need moving the cursor. It would be like a double click. I don’t see any problem with that.
Well, I see it like the same thing actually, for me it is the same, just one mode is more constrained than the other.
Well, you will have to ask krita users, because people that work on other softwares don’t have any experience with the inherit alpha like clipping.
That only time can tell, I don’t know what others will do. I’m sure that people used to other softwares will gravitate to the familiar mode. The problem with the current approach is that it forces you to work in one way, with groups and alll that. If they have the possibility of using the two modes, maybe a third workflow that we cannot envision right now will appear. Who knows.
There are multiple things that can annoy people. Every single thing that we are discussing can annoy someone. I’m sure that whatever perfect solution we come about with, there will be someone that will be annoyed by it.
Another ui possibility just occured to me: The inherit alpha button just enables/disables the clipping. When it is enabled it clips to the layer bellow only, and the layer is indented a bit, showing the down-arrow on the left. Then, if the user clicks on that arrow, the mode alternates between layer bellow and all layers, and the arrow icon changes a bit to reflect the current mode.
What I still don’t understand is why there ‘cannot’ be both inherit alpha (perhaps with some improvements mentioned in this topic) and clipping masks as you may know them from Affinity, Illustrator or Photoshop. Inherit alpha is a bottom up organisation and clipping masks top down. Both serve a particular use. They each have a different mindset.
I would even go as far as to argue that there doesn’t need to be a clipping mask button to replace the inherit alpha button, because what I would use is:
A hotkey to clip a layer/ group below the mask
A hotkey to release the layers from the clipping mask
A canvas input setting (so you could map alt + dragging a layer to a clipping mask to clip it)
A right click on layer menu item with clip/ release clipping mask
A preference option to open files with ‘legacy: inherit alpha’ or Clipping masks.
I don’t know how involved it is to get it to work like thid code wise (especially for 5.). But at least this proposal of mine shouldn’t interfere with any (UI) paradigm in Krita, as it only adds a mode without affecting inherit alpha.
E: I am in favour of indentation over arrows. That’s already sufficiently clear.
E2: I could see the inherit alpha button being used fir clipping masks if and only if the layer is already clipped and needs to be released. The button is for inherit alpha for a reason. Though the layers dicjer could, like the indentation option have an option to dedicate the button to inherit alpha or to clipping masks. That way, people who opt to solely use clipping masks could use it for that if they don’t use inherit alpha. That would be the most complete imo.
Please don’t do changing buttons, anything beyond a toggle gets confusing (not to mention that you need to look carefully that you clicked once or twice > it’s not as straight forward anymore).
E3: Misread, clicking the arrow would be okay, but is the arrow only for layers below (inherit alpha)?
In my opinion this issue is one of those quirks that FOSS tends to have, which sometimes stand in the way of mass adoptation. I like how you phrased it @Deif_Lou, the proverbial foot in the door indeed.