Why is my bump map pixelated?

It affects both, Cycles and EEVEE.

to qomolangma: the model already have subdivision modifier with 4 level of subdivisions.

Might be because my build is over a week old, but for me the image texture nodes interpolation value makes no difference in eevee. In cycles the bump mapping doesn’t respect the UV’s.

Anyways, I know I had seen something about this somewhere:

That explains the eevee part of it.

edit: cycles part was just a strange update issue. Guess I just don’t have the same issue as you.

texPaintTest.zip (258.2 KB)
Here’s a simple scene for testing.

edit2: I do. But only then using a very soft brush stroke.

yep, I confirm that eevee has this odd filtering:

Yeah, and after carefully making very soft strokes with my wacom pen I can get the issue you are having, and as per your above post switching the texture node to cubic interpolation does soften the texture filtering. Doesn’t fix the issue but does soften it. I’m still of the opinion it’s mostly to do with the brushes.

edit: there is an option for adding dithering to the strokes though, might be worth experimenting with it. Find it at project paint drop-down panel at the right end of the top bar when in texture paint after activating the brush tool.

To me it looks like Interpolation is as it should but you simply have a too low texel resolution. Check your uv mapping.

Texel resolution my friend. It doesn’t matter if you have a 2k, 4k or even 8k map. What matters is the ratio between that map and the space it really occupy on the screen (or the print) once viewed (or rendered).

Kind of. In order to depict a normal at some angle, a bumpmap needs a continuous gradient whereas a normal map needs a single color. A normal map will show pixel issues only where the gradient changes, whereas a bump map will show pixel issues for each “elevation”.

The best thing you can do is to increase the contrast of/normalize your image and then blur it. However, it doesn’t matter how big the resolution of the bump map is if you zoom in past the “pixel information density” (not sure what to call it), and by the zoom level in the image it appears you are well past this point. Any image based bump map will look crappy when you zoom in. Cubic interpolation helps along the edges, but doesn’t smooth it out completely.

If this is the “shot you want” (extreme zoom), you can rearrange your UV so that the zoomed in portion is covered by more pixels.

Alternatively you can use a painted mask (resolution not that important) and paint in effects from procedurally created bumps which is waaay more harder (then it’s floating point accuracy issues) to get into resolution and “bit depth” problems.

Set the bump distance to 0.001 in node editor.

1 Like

Bump Mapping

As of now, bump mapping is supported using OpenGL derivatives which are the same for each block of 2x2 pixels. This means the bump output value will appear pixelated. It is recommended to use normal mapping instead.

https://docs.blender.org/manual/en/dev/render/eevee/limitations.html#materials

Wasn’t this recently updated (2.81 beta perhaps?).

Yes. Bump maps will not be pixelated anymore starting with 2.81. This is a thing of the past.

1 Like

Well, they may still be pixelated due to interpolation mode or bad texture, but at least not from engine point of view.

Just tested in 2.81. Still artifacts…

What’s the source? Image or procedural?
Previously procedural bumps was “unusable”, but I have other reasons not to use Eevee yet.

Make distance around 0.01 or even around 0.001
and strength around 1. High distance makes you lose data.

1 Like

Hello, these are my results. No change when using image texture as bump (probably has more to do with the image resolution), but procedural are improved.

You try “Cubic” interpolation instead of “Linear” in Image Texture node. In addition, as far as possible you try to use not very high values in Bump node.

Edit:
I am not sure about the quality of your texture image. But if the pixelated doesn’t happen with Cycles, I guess the map image is correct.

2 Likes

Using procedurals should be fine unless you zoom in so far that math accuracy comes into play. I’m always using bump strength 1, but control the bump distance according to procedural density. Meaning I use a value node to set the generators scale directly, and bump distance is 1/value * mydistance. So if I increase the scale (density), distance is reduced inversely. I find it very odd that this number is in meters - usually even if I don’t control it like this, I have to use a math node (myvalue/1000) in order to have some visual control over it; the 0.001 accuracy of the value node doesn’t cut it at all.

If you make a leather material with bumps, the height should be less than 1mm (0.001) - at least I haven’t seen coarser bumps.

This was regarding bumps in general, I don’t know about Eevee limitations.

1 Like

Hi, I just ran into that problem and using your settings fixed it: Bump Distance to 0.001 and Bump Strength to 1.0.

I had this problem a while back - it might not be the fix to your issue, but you can try!

I found that my texture was WAY pixelated, because I had forgotten to map my image texture to my UV’s! (which looks like the case here, as well)

image
make sure that you map your image texture (using UV’s, object coordinates, or whatever your heart desires) or else the image texture will just throw itself on at its default scale (a scale which may be WAY too upscaled to distinguish anything.)

Give blender a hint! :wink: