11
$\begingroup$

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 ?

Is it possible to compare both with advantage and disadvantage ?

$\endgroup$
  • $\begingroup$ 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. $\endgroup$ – MaT Mar 31 '17 at 8:23
  • 2
    $\begingroup$ One of the big factors of why things don't immediately get adopted is inertia and that the existing solution being good enough. $\endgroup$ – ratchet freak Mar 31 '17 at 8:56
4
$\begingroup$

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.

$\endgroup$
  • $\begingroup$ 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. $\endgroup$ – Nathan Reed Apr 6 '17 at 21:32
  • $\begingroup$ 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 ? $\endgroup$ – MaT Apr 7 '17 at 15:12
1
$\begingroup$

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).

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.