Bump & normals - smoothing problem (GPU mostly)

Hello,

usually I was using bump maps, but in my latest project I was hoping to use normal maps for a more realistic reflections behavior and the result was a bit disappointing:

This was rendered in V-Ray GPU, so I tried CPU and it looked better (especially when it comes to smoothing on the sphere):

It made me curious why this faceting effect is happening so I went deeper and it finds out, that it occurs not only with normals, but with bumps too (thanks to my friend, who noticed it). Below is my exploration in a very simple scene with just a sphere and 2 plane lights plus 1 HDRI.

Let’s start with a radial bump (VRayBitmap Raw > VRayColor2Bump 0,2mm > VRay Mtl) and planar mapping:

Changing direction only changes the placement of the faceting. So let’s try with the unwrapped sphere (pelt map) using GPU and CPU:

Now it’s getting even more visible, so triplanar maybe?

Still not quite.

Let’s jump to the normal maps then (VRayBitmap Raw > VRayNormalMap 1.0 > VRay Mtl), firstly with the unwrapped sphere:

Then with a planar mapping and here I found something interesting - Y axis (facing a camera) gives a nice result, but switching W Tile Flip to On in a UVW Map modifier make it similar to the earlier broken version.

Finally a triplanar mapping and here is something interesting too - even when a VRayTriplanarTex stays exactly the same, changing the sphere’s mapping on channel 1 gives totally different results, but in GPU engine only - the CPU one is immune to that.

I really hope that I’m just doing something wrong and that there’s a simple solution to this, but neither Google nor this forum gave me an answer to this problem, so maybe we’ll be able to figure this out together.

You can find the scene (3ds Max 2024) here > LINK

My specs:

CPU: AMD Ryzen 7950X3D

GPU: Nvidia RTX 5080

Drivers: 610.62 Studio

V-Ray: 7.40.04

Windows: 10 Pro

Ok, now I feel stupid - I was so focused on the weird results with this ONE normal texture, that I didn’t check different ones and guess what, it looks like it’s just this particular texture problem…

In this thread Vlado writes about proper guessing of gamma and channels and after examining my normal texture I’ve noticed, that it looks not like illuminated from one side, but from every side, so it’s more like a radial gradient ramp than a normal map - sorry for a false alert.

But my bump map looks ok I guess…

so it seems there’s still a problem with bump mapping and I would really appreciate help with that.

I think the map itself is fine, but it’s too detailed to be smoothly represented on such a low-poly sphere (due to normals working in Tangent Space). Increasing the iterations of the Turbosmooth to 3 seems enough for the faceting to disappear. Another trick I’ve seen is adding a VRayDisplacementMod set to Subdivision and Amount at 0. This moves the subdivision at render time and won’t affect viewport performance.

Thanks for the explanation @hermit.crab, I’ve also noticed that the problem with this normal map is that it has too much intensity baked - when I lower Normal map strength to 0.3, then it looks smooth even on this low poly object. But this trick with adding a VRayDisplacementMod is genius, it allows to push the intensity a little bit more. Same with the bump map, which was too big and lowering it from 0,2mm to 0,05mm removed all smoothing problems, but with your trick even the 0,2mm value looks still good - thank you for that! I’m sure it will help whenever I need to add normal maps to CAD models.

But this thing with a Triplanar mapping being dependent from the object’s mapping (at least in GPU mode) still bothers me - is this some kind of a bug? Or should the object be mapped somehow before using a Triplanar to make it look more physically correct?

Hm. It seems that V-Ray GPU uses channel 1 internally, and using a UVW Map set to that channel does some overriding.

There is a known issue where there MUST be some UVWs on the object for triplanar normal to work properly, which seems related. It probably works for CPU because of the different logic (being truly 3ds Max integrated and all) of always using the 3ds Max default UVWs. Since GPU works tightly with Standalone, those default UVs are probably baked to channel 1. I need to confirm this with the devs, though.

The workaround is simple - either remove the UVW Map or put it in channel 2.