'What information is stored in the magnitudes of normal map vectors in UE5?

As I understand it, normal maps simply describe the direction that the surface "faces". As such, it does not make much sense to me for these vectors to have a magnitude other than 1. However, I have come across multiple learning resources suggesting that scaling a normal map is a good way to increase "bumpiness" of a surface.

I would expect the correct approach to be scaling up the bump map, and then generating a new normal map (with normalized vectors). Multiplying normals should not give the same result.

Additionally, I was looking at Unreal's "FlattenNormal" material function. This function lerps between a normal and (0, 0, 1). This clearly does not always result in a normalized vector. This suggests to me that either:

  1. the magnitude of a normal vector does in fact matter;
  2. or normal vectors get normalized before being used.

If 2. is the case, then scaling up normal vectors by a scalar should not achieve anything, right?



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source