Tangent Normal Engine

I was testing the tangent brush engine and taking a look of the output in blender.

And I noticed 2 things that are worth noting.

Despite the normal map gradient being smooth visually you need to use the Phong bump-map filter to analyze inconsistencies of your brush stroke. this ends up being troublesome to the point the engine is more of a references of the normal map that a brush that paints normals.

  1. the stylus is so sensitive that even holding still causes shifts in the normals let alone when doing a stroke.
  2. The stroke is painted and trying to blend colors is somehow not successful. Sounds weird but it seems to need a dedicated blender to properly work. if there is a way to do this with the tangent engine I would actually love to know it. But for what I saw up until now it kinda sands of the surface instead of doing a curve for the shift of colors your doing so it does not go to far due to a small technicality.


random normal map

phong filter analysis (you can see here what is happening already)

render result in the 3d world.

So I naturally tried to give it a pass and fix it to see if I could iron it out.

Blending the normal map to try and fix it with the smudge engine.

result for the fix. it is smoother but you can still see the little steps.

my thoughts would be 2 possible solutions:

  1. to have a filter to like blur the transitions only using normal colors and not RGB calculations.
  2. a little brush from the tangent engine that you could blend normals with on certain spots. Like a smudge does but in the normal coordinates you have set.

I did more testing on this and I am not sure if I reduced the error of the normals or not but it is still noticeable.

I created a animated blend file to show light around the plane.

bad spots:

normal map:

this time I used a blender (smudge engine) but with the Tangent Normalmap Blending mode but I don’t know if that is even valid or not. Regardless it seems way better than using the Normal blending mode.

Is this how your supposed to do it or it was just luck?

okay this is funny XD

Hi, did you try:

  • making the Spacing smaller
  • using it on a 16bit image? (8bit might be a bit small - it’s just 256 steps in every direction!)

I’m not sure but I think blending in RGB would be the same as blending in the normal map space, because it blends every channel separately anyway.

new test in 16 bits (on the highlight you can see the steps have increased)

16bit smoothing the map with smudge engine (end of ring shadows indicate start of smooth area)

It seems that working in 16bit makes the steps even more noticeable from the tangent brush and from the RGBA brush I made. However when smoothing things look alot smoother even though the phong filter makes me think I did a boo boo but verifying in blender I can see it smooth.

However this is the first time I used 16bit for a normal map though. I think there is enough space for 8bit. Normal maps are not like vector maps and they only go 90 degrees to either direction from the normal vector.

Seems my canvas has the R and B inverted when I go to 16bits too. I need to try and fix this.

1 Like

Noticed something. RGBA brushes do not handle 16bit, they have their R and B swaped it is not my Render Engine of Krita.

P.S. - 8bit is right and all the other bit depths are swapped not just 16 bit integer.

1 Like

Oh yes I forgot. The spacing is set to the smallest possible on all tests. But they clamp for some reason every other set of tilt value from the stylus.

I think you’d want to do normal maps in float, precisely for this reason?

well just did 3 bug reports. Seems I just keep finding weird stuff.

Phong filter does a instant crash when you try to isolate a layer and then there is this :V

Normal maps have to be done in float? uhmm I never heard of that before but I can take a look into it. I have been doing all my maps in 8bit and they all have been good. I will be on the look out if I see that.

1 Like

@EyeOdin: depends, of course. 8 bit may be fine for e.g. a 256x256 map with no large, shallow gradients, but you’re likely to get banding with a 2048x2048 map.

Then there’s dithering, which can help. But I’m sure you’re familiar with these. The stepping artefact you encountered looked like banding to me, so maybe trying float might be a good idea just to rule that out.

1 Like