[Testing needed] New Colorsmudge Engine for Krita 5.0

I’ve been testing the krita 5 version and the brushes, they are awesome!!!

One thing I noticed is that the “RGBA-wet 08 Impasto input” seems to be ignoring transparency of the color one starts painting on and paints without transparency.

Also, I noticed that since all the brushes mix the colors when pressed smoothly, when starting on a very transparent color, or no color at all, and paint over another color, it’s is like works as an eraser.
For example, supose you have a 100% opacity red square and adjacent a transparent square or say a green 10% opacity square. With this brush if you start on the green square and drag to paint smoothly over the red square, the read square opacity is lost, it works as an eraser then.
I would expect that the opacity shouldn’t be lost and the resulting opacity shouldn’t be less than what already is there.
I would like to know if this is a property of the brush engine or if there is a way to change it in the brush configuration (I looked but get lost in all the options)

Thanks and congratulations on the brushes, they look superb!!

Hi, @Mythmaker!

I have checked your report. The problem happens because with time your lightness strength drops to zero and therefore nothing is painted on the lightness channel. The workaround solution in the current build is to not let it drop to zero, like shown on this screenshot:

I have made a patch that forbids lightness strength dropping lower that color rate and smudge rate. I guess it would be a good solution. The fix will be available in the next build (I still have to fix one more bug before doing the build).


Hi, all!

I have fixed all the reported issues and made new packages.

Issues that have been fixed:

  1. Artifacts when using Rectangle tool in Lightness mode (reported by @RamonM). Now it explicitly “dries up” the paint before and after the use of any figure painting tool.

  2. Lock alpha switch now works correctly (reported by @wojtryb)

  3. The brush now doesn’t let “lightness strength” drop too low when the brush still paints something (reported by @Mythmaker)

  4. The lightness strength is now premultiplied with “Opacity” value (noone noticed it was untied from opacity). Now the behavior is consistent, all three painting parameters, color rate, smudge rate and lightness strength are premultiplied with opacity value.

DK8 (27.04.2021)


Hi, @pablo!

Also, I noticed that since all the brushes mix the colors when pressed smoothly, when starting on a very transparent color, or no color at all, and paint over another color, it’s is like works as an eraser.

That is the behavior controlled by “Smear alpha” checkbox in the “Smudge Rate” page. You need to disable that to get the behavior you want.


Hi, @RamonM and @tiar!

I have prepared a very experimental package (DK9) with optional brush normalization feature. Could you check it and tell what you think about that?

Important notes:

  1. This normalization algorithm work a little different from the one in DK8 and all the previous packages. The brush you created will probably look a little different from how they looked in DK8.

  2. The normalization is disabled by default, so you’ll have to enable it for your preset to look the same as before.

  3. This implementation of normalization also available in Pixel brush engine.

  4. If you hover the “Auto” checkbox you’ll see the average lightness of the brush before and after the current adjustments in the tooltip. You can use this information as the first approximation for your settings.

DK9 (27.04.2021)



27 posts were split to a new topic: [Needs Feedback and Testing] Colorsmudge with smeared heightmap (slow but hi-quality version)

@dkazakov This is what i get. I would need to adjust the brushes, but if @tiar @Voronwe13 and you decide what would be better and why, and explain me in “human” words is ok, no problem

I look for basically 3 things;
Blending soft in low pressure, drag painting in mid pressure as i show in picture to manage the painting as liquid paint (or move a lot the color) and then get color in a “crescendo” :wink: Also using tilt but i have the problem that i don’t know how to include in the icon without mess it.

I paint comfortably a DinA 4 and we are beginning with this. so i am satisfied :smiley:
Not Annoying things
Don’t rescale the brush if i change a parameter
The problem i showed you in the video talk @dkazakov


Hi, @RamonM!

Just a quick note, don’t update the brush presets until I fix this bug. Otherwise you’ll have to do the same work twice :frowning:

6 posts were split to a new topic: [Proposal] Combine Colorsmudge and Clone Brush engines

Here’s what I tested. It is not very refined, just put an hour or so into it. I created a new brush based on my Craig_02 brush tip (the green one) and used two other brushes by Ramon that he posted here. Smudging is going well and the performance isn’t too bad. We will need to find a perfect balance of just a few, well selected brushes, should probably do a community thing like with the charcoal brushes. To me, the feature set of Krita for wet painting is now pretty solid once this and the height/blend modes are finished and end up in master. Thank you to Dmitry and everyone else involved. :slight_smile:


Really good tree. And the brushwork is also interesting. I agree that the community can generates even better brushes in future, that is the reason why I have published these brushes here for free to make beta testing easier or at least people can play with this feature.
I was thinking exactly the same. Charcoal challenge was very good and …spoiler ! I am adding some new brushes for future :wink: in the next video they appear a bit in my brush docker by accident.


Hi, @Voronwe13, @Mythmaker and others!

Since I need to make a decision about the original colorsmudge engine that is ready for integration into Krita 5.0 tree, I have taken the power and split the thread into three separate topics. Let’s continue the discussion of separate topics in separate threads now :slight_smile:

  • slow but hi-quality heightmap smearing mode is now here
  • combine colorsmudge and clone brush engines is now there

In this thread I would really like to know your opinion on the following questions:

  1. Does DK9 package delivers good-enough experience to the painters?
  2. Does it look as an oil-paint brush?
  3. Are there any regressions in other modes? E.g. in these modes:
    • Legacy mode + Dulling
    • Legacy mode + Dulling + Smudge Radius
    • Legacy mode + Smearing
  4. Does it work “expectedly” in Overlay mode?
  5. Does it behave “expectedly” with selections and Inherit/Lock Alpha modes?
  6. If anyone is aware of any blocker from merging this branch into Kirta 5, please state it now! :slight_smile:
  1. I would say yes, performance is nice and smooth, painting with it is fun.
  2. Yes.
  3. I’ll pass on this one, for me everything looks good, but Voronwe13 and Ramon know a lot better about these nuances then I do.
  4. Yes.
  5. Yes.
1 Like

Lightness Strength is broken in this version. It should closely match the behavior of Lightness Strength in the pixel engine, and most importantly, when it’s 0, the brush should not exhibit any height/lightness variation at all. It’s very important to me that I can make brushes that can go from full impasto to completely flat. Here’s a quick image I did to show the issue:

The issue is very prominent with my most extreme lightness brush, but that brush isn’t much more extreme than some of the brushes I actually use. Even with a brush using Ramon’s DAOil brushtip, you can still see the lightness variation in the brush at 0% Lightness Strength.


I didn’t notice that until I tested it specifically - but you are right!

I think it’s because I had opacity set to fade in with pressure, and that does affect the lightness strength. With variable opacity off the lightness strength seems constant.

Before that I thought it was going well - my general testing was positive. The only thing that was weird was using overlay mode - because it doesn’t apply to the lightness underneath, so it feels a bit unnatural/unintuitive. It’s not a big deal to me personally as I don’t use overlay mode in my normal workflow, and that behaviour might even be useful for some effects (like emulating a textured canvas).

Hi, @Voronwe13!

Can we somehow fix this issue without adding a separate heightmap smearing routine and, therefore, sacrificing the speed? Perhaps we could rename the option into something else? Like, “paint liquidity”?

Just to make it clear, my current plan is the following:

  1. Complete the fast version of the lightness-colorsmudge and release it in Krita 5.0
  2. Get more feedback (and, probably, optimize) the slow version with heightmap smearing version, and release it as an option in a later Kirta 5.x release.
1 Like


This Lightness Strength problem is a result of being hard coded that it is more than zero when the curve is at zero right? So the stroke never goes full flat.

Currently this gives a pseudo realism to RGBA brushes, specially when the Color Rate goes to zero. Because a real brush without paint still leaves impasto on the painting. However this limit the digital tool that is Krita, as an user cannot create a brush that goes from full impasto to fully flat.
At this point we have two situations (right?):

  1. Leave as is. At first define that Smudge RGBA brushes can’t produce flat strokes, and wait for the height smudge to correct this.
  2. Return to DK7 behavior where we let a Lightness Strength to reach zero, and then accept the ‘bug’ where the impasto freezes when it is at zero strength.

However I have an idea. It may not produce good results, or maybe is too hard / impossible to implement but here it goes. What do you think of when Lightness Strength reaches zero the brush erasing the Height Map? As far as I know this would produce a flat stroke, and if it smear into a previous height stroke it would prevent that freeze impasto.

I think this would be a good solution for the interim. Or rather, that new height information overwrites old height information, and only blends based on Opacity. And then when @dkazakov adds the ability to smudge the heightmap as an option, the user can choose between the behavior for Lightness Strength being to overwrite the existing heightmap, or to smudge the existing height instead. I can see both behaviors being desirable for different brushes.

Hi, @Voronwe13!

Do you have an idea how to implement this “erasing” functionality? I don’t really understand how it should work.

I have made a testing package. In it, when “Lightness Strength” reaches 20%, heightmap composition switches from “normal” to “erase”. The effect is rather fun, but I don’t think it looks “expected” to the user. It looks like this erasing could be some separate option, because it “smoothens” the canvas.

I was doing some more testing yesterday (DK9) and wrote some notes on what I observed:

As already noted - Lightness strength is constant if variable opacity (pen settings) is off i.e. ‘Lightness strength’ doesn’t appear to do anything if pressure sensitivity is off in the main ‘Opacity’ setting.

I noticed in that instance; the main opacity slider appears to have a very small effect on the lightness opacity down to about 10% - then it starts to fade out more noticeably.

I also noticed with colour rate off, the lightness will only display if painting on an already opaque area or layer; It doesn’t show at all on a fully transparent area or layer.

I’m not sure that’s actually a problem; just figuring out what the limitations are and whether there’s any anomalies that shouldn’t be. It’s possible a user could want to apply an impasto texture only on it’s own layer - but that’s not possible with this limitation. There are workarounds for that anyway (e.g. using a mid-grey with an overlay layer).

I’m not sure about the suggestions for the impasto issue - it sounds a bit odd to me. The current implementation might not be ideal, but it does feel quite authentic as noted by @Daishishi - you would expect a brush to leave bristle marks when you work back over painted strokes; and that’s what it does. It spreads out and becomes thinner/less textured as you work back and forth over the laid paint stroke.

As an emulation of real media, I can choose a soft blending brush without lightness to flatten any areas I want to be impasto-free; in a similar way you would pick up a soft dry brush when oil painting.

So - I think it’s good in it’s current state, and mostly feels right when I’m painting. I’m not against what @Voronwe13 is saying though about it being a digital medium; You would ideally expect to have the flexibility to reach zero lightness with the brush if you’ve set those parameters.

By the way - has it already been mentioned somewhere how the current implementation actually works on a fundamental level? I’m curious in case I can think of anything practical that might help. :nerd_face:

1 Like