# Derivative maps vs. Tangent Space Normal maps

I discovered that some engines use derivative maps instead of tangent space normal maps.

After some reading, it seems to be a really awesome way to replace tangent space normals but are there some disadvantage using them ? Why still continue using tangent space normals ?

• There are several blogs talking about derivatives and it would be cool to have some feedback from people who implemented them in their production engine and why they choose that method.
– MaT
Mar 31, 2017 at 8:23
• One of the big factors of why things don't immediately get adopted is inertia and that the existing solution being good enough. Mar 31, 2017 at 8:56

After some researches and some answers from professionals here is my conclusion.

Pros

• Don’t require tangents or binormals. Less interpolators.
• Only need two channels. less texture memory.
• Don’t suffer from tangent seams.
• Can be blended using alpha blending, without renormalization.
• Less mesh memory: We don’t need to store a tangent vector.
• Fast implementation.

Cons

• More ALU
• Less flexible. A normal map can represent any derivative map, but the reverse is not true. As an example, sharp edges can be difficult to represent.

So, that's a lot of pros compared to cons. But the major problem is that it's not an industry standard.
There are almost no content authoring tools nor artist know-how.

Here's is a quote from Bart Wronski that illustrates well the current status of derivative maps :

Sadly in life / technology not always best solution wins / not even gets deserved attention... It's more about standards and inertia.

If you are interested in knowing more about derivative maps here are some interesting articles.

If I forgot something or if your don't agree feel free to tell in the comments, I would be glad to improve this answer.

• Some of your pros seem to be about not using precomputed tangent space (i.e. deriving the tangent space from UV derivatives per-pixel), which AFAIK is a separate design choice, independent from the choice of derivative maps vs normal maps. Apr 6, 2017 at 21:32
• Thanks for the comment @NathanReed Are you talking about the fact of calculating tangents and binormals ? Could you tell me more about precomputed tangent space ?
– MaT
Apr 7, 2017 at 15:12
• Can you tell me why sharp edges cannot be represented with derivative maps and how severe the limitation really is?
– Tara
Aug 19, 2022 at 4:09

I assume that you're using precomputed height map derivatives rather than calculating them on the fly (for details see this post on Mikkelsen's blog). If we need to supply pre-computed height derivatives, then we have to supply two channels, just like a normal map. One could argue that derivative mapping doesn't require the presence of a tangent vertex attribute like normal mapping does, but the extra differentiation operations on the height map somewhat nullify that performance gain. Derivative maps are a cool concept, but at the end of the day I don't think they are significantly better than normal mapping performance-wise (although conceptually I agree that derivative maps are easier to work with because we don't have to deal with tangent space).