World normals are tilted off-center and it makes them unaligned with world position

I have this huge issue with world normals and I need a fix because otherwise it destroys the art style I’m aiming to create in my shaders. I don’t use high poly geometry and for me it’s very critical to keep all normals perfectly aligned with world position. Basically all world normals are tilted in one direction but the angle is not the same for different levels, depending on something that’s totally unclear to me. Also I checked UE4 and the problem exists there as well.

If you look, for example, on the ground you can see that XY values are never 0, while Z value is 1.0 but the normal should be exactly (0,0,1). In case with angled surfaces you can find the difference only by exporting the model to obj format and checking it in notepad. The discrepancy may look not that big on the screenshot but it still matters for huge flat polygons, also it gets bigger in different levels, usually in range 0.00xxx which is quite big if you ask me.

I know for sure that this is not an asset import problem, this tilt is done by the engine and baked into GBuffer.

If there is a technical explanation for this weird feature somewhere I’d like to know about it but if it’s a bug then definitely it needs a global fix and in the meantime finding any robust countermeasure is very critical for me.

shot in the dark but in the import method for your meshes have you tried “Import Normals and Tangents” rather than “Calculate Normals” which i think is the default?

As I said already this is not an import issue. You can open any template level or just create blank level and this issue will be there.

Does enabling High Precision Normals in the project settings effect it at all?

(also Use High Precision Tangent Basis on the static mesh)

This helped with zero values but unfortunately angled surfaces still have loss of precision. The value on the screenshot should be (0.000000, 0.970153, 0.242500).

I guess it’s probably impossible to make it identical.