Download

Normal Map Tiling Invert Problem ?!?

Recently I realized something is wrong with tiled normal maps.
It inverts normal then tiles then inverts then tiles again.
What I mean is

I have found the reason.
It happens when setting tiling methods to mirror on texture properties.
So is it a bug or is it what is expected on normal maps to be ?

Any chance the texture adress mode is set to Mirror instad of Wrap?
This shouldn’t happen by default.

Edit

This is expected behaviour. You could use an advanced material setup to undo the normal map inversion.

Yes adress mode is mirror.
Is it what is expected to be when setting adress mode to mirror ?
Isnt mirroring only affect texture coordinates ?

Why is it expected behaviour ?
It is nonsense, pure nonsense.
If it happens cuz of the nature of algoritm or something it is alright, but if it happens because developers want it that way I dont know what to say then.

Let’s imagine this is the texture.

This is what happens wrap mode.

This is what I expect to happen in mirror mode.

This is what happens in mirror mode.

I use mirroring because it is easiest way to create a seamless pattern.
Could you share how can I fix it with advanced material setup ?

Why?
Why do you use “mirror” instead of “repeat” to get seamless texture?
Why do you expect it bo mirrored by X axis only and not by X AND Y?
I completely don’t understand reasoning behind this all Oo

I explained my previous post why I use it.
Because it is easier.
It was just an example what I expect and what happens on mirroring X axis, the same also applies for Y axis.
Despite it is not a constructive answer but still thanks for answer anyway.

I tried something and found a solution.
It adds 8 instructions, if there are better ways available please let me know, thanks…

Yes, but normal maps are different than regular color textures. Multiply your texture coordinates by -1 and the normals also get inverted. Same happens if a mesh has mirrored UVs unless the engine has a built-in fix for this case.

I’ve built this material function to fix inverted normals when mirroring (8 instructions)
facc5a6bd05ea19123054509d97d12939ed8cd37.png

In my setup your solution takes 6 instructions and gives better result I guess.

Checker pattern result.

Your result