Destructive Layer Filters

Problem

MyPaint is awesome; it’s my daily driver right now. But the biggest issue I have with it is breaking my workflow every time I want to adjust the hue, brightness, etc. on the layer. It’s a bit easier with post-processing (blur, tilt shift, etc.) because I don’t have to go back to mypaint to change anything, but if it’s possible it would be good to have as well.

Challenges

I may be wrong, but perhaps some of the code from the display filters could be used here, since it has a similar effect, but that could just be affecting rendering. I’m not that familiar with the underlying code in MyPaint (although I am trying to learn it), so I can’t really say what other challenges would be encountered.

Examples

  • Infinite Painter (android) has the best implementation of this I have ever seen, period. Very intuitive, and easy to pick up. Most of the features on it are probably out of scope, but the general design is a good model to look to.
  • Krita also has this in the Filter menu.
  • And GIMP’s Colors / Filters tabs, of course

The Infinite painter video you link looks neat but is also confusing because things are happening too fast. my guess is that it works similarly to the GEGL filters in GIMP 2.9, that have progressive real-time on-canvas preview.

MyPaint actually already uses GEGL in the back-end, so a lot of basic filters (~180 of them at quick inspection) are, in principle, available. This is of course different from actually having UI available for applying them.

The main problem with your post as a feature request right now is that it’s not really clear exactly what you are requesting:

  • Permanently changing the layer content (ie. ‘destructive filtering’)?.
  • Changing the appearance of the layer in realtime without affecting the stored pixels (ie. ‘non-destructive filtering’)?

Sorry the video was kind of crappy but I couldn’t find any good ones. If you want (and have an android) you can download Infinite Painter for free, to see it for yourself.

I can’t believe I forgot to mention GIMP in the examples. GIMP has a good implementation as well, exactly what I mean. The HLS sliders in particular.

I meant destructive filtering. That way you can use the tweaked values as an assistance in paintings, not a different way to temporarily look at them.

As for the UI, the MyPaint->Color->Component Sliders would do nicely for HLS at least.

I wish I could make some kind of prototype of this but I can’t decipher the codebase just yet :P.