4.12 Wavy normal maps?

Hello,

I just noticed normal maps on glossy surfaces look wavy after I have moved the project to 4.12. Have I missed a note or something?

Post a picture, there’s lots of different issues this could be describing.

The bigger waves are expected as it’s a sand texture normal map. The problem is the smaller waves you see in the red circles. All normal maps show these artifacts.

That looks like normal map compression artifacts. Try opening up the normal textures, choosing some different variants for formats, and re-compressing, and see how it changes.

I’m a little lazy, there’s a ton of normal maps. Looked fine in 4.11. Not sure what’s wrong :confused: I will create a new normal map and see how it looks when imported.

Hmm… This almost looks like Epic reduced the bit range of the normal calculations in the deferred renderer. Possibly to make way for new shading models without impacting performance. Don’t quote me on this, it might not be the problem. But I noticed on smooth slopes on my landscape I get significant stepping, almost like a crystal. It could be a number of things.

The GBuffer format has changed a bit in 4.12 due to optimizations and some other things. The artifacts you are seeing are due to having a large smooth, gently curved surface and the gbuffer’s normal precision being too low, resulting in banding.

If you want full control, or to make it a quality-based option in your project/game, you can manually control the setting via the r.GBufferFormat cvar. Run ‘r.GBufferFormat ?’ to see a list of options. The one you probably want is 3, which will give you the standard precision for all buffers except for the normals buffer, which will be set to high precision. This should fix your issue immediately.

You can also control this setting via the project settings in your project (though it only lets you choose to use formats 1 or 3, and it will apply project-wide, regardless of scalability):

Thanks. It’s mentioned that

Does that mean we’re now gonna pay more for having smooth normal maps or the cost is only going to become the same as in versions before 4.12 ?

I believe the cost of high-precision gbuffer normals in 4.12 will be higher than standard settings pre-4.12, but the quality will also be higher. I took a look and this is what the situation appears like to me (an Epic dev could elaborate a lot more):

4.11: medium quality gbuffer normals
4.12 default: somehwat lower quality gbuffer normals than 4.11, better performance than 4.11
4.12 high-precision normals: very high quality gbuffer normals, memory bandwidth performance may or may not be worse than 4.11 depending on various other factors, and memory usage will be slightly higher

I should point out that the normals in 4.11 and earlier were by default not perfect, they were just a little better than the 4.12 defaults – banding and artifacts were still apparent on very smooth surfaces if you looked for them. High-precision normals in 4.12 will eliminate that in basically all cases that I’ve seen so far.