<p>I assume that you're using precomputed height map derivatives rather than calculating them on the fly (for details see <a href="http://mmikkelsen3d.blogspot.com/2011/07/derivative-maps.html" rel="nofollow noreferrer">this post</a> 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).</p>

CC BY-SA 3.0
2017-04-01T23:09:33.567Z
2017-04-02T00:01:57.743Z
2017-04-02T00:01:57.743Z
AnimatedRNG
<p>After some researches and some answers from professionals here is my conclusion.</p>

<p><strong>Pros</strong></p>

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

<p><strong>Cons</strong></p>

<ul>
<li>More ALU</li>
<li>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.</li>
</ul>

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

<p>Here's is a quote from <a href="https://twitter.com/BartWronsk" rel="nofollow noreferrer">Bart Wronski</a> that illustrates well the current status of derivative maps :</p>

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

<p>If you are interested in knowing more about derivative maps here are some interesting articles.</p>

<ul>
<li><a href="http://mmikkelsen3d.blogspot.fr/2011/07/derivative-maps.html" rel="nofollow noreferrer">Mikkelsen and 3D Graphics: Derivative Maps | Morten Mikkelsen Blog</a></li>
<li><a href="http://www.rorydriscoll.com/2012/01/11/derivative-maps/" rel="nofollow noreferrer">Derivative Maps | CodeItNow</a></li>
<li><a href="http://www.rorydriscoll.com/2012/01/15/derivative-maps-vs-normal-maps/" rel="nofollow noreferrer">Derivative Maps vs Normal Maps | CodeItNow</a></li>
<li><a href="http://therobotseven.com/devlog/triplanar-texturing-derivative-maps/" rel="nofollow noreferrer">Triplanar Texturing with Derivative Maps | The Robot Seven</a></li>
<li><a href="http://polycount.com/discussion/91605/derivative-normal-maps-what-are-they" rel="nofollow noreferrer">Derivative Normal Maps - What are they? | polycount.com</a></li>
<li><a href="https://docs.knaldtech.com/doku.php?id=derivative_maps_knald" rel="nofollow noreferrer">Derivative Maps | Knald Technologies Documentation</a></li>
</ul>

<p>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.</p>

CC BY-SA 3.0
2017-04-06T21:32:47.497Z
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.
Nathan Reed
CC BY-SA 3.0
2017-04-07T15:12:59.450Z
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
CC BY-SA 4.0
2022-08-19T04:09:11.170Z
Can you tell me why sharp edges cannot be represented with derivative maps and how severe the limitation really is?
Tara
CC BY-SA 3.0
2017-04-06T17:19:42.487Z
2018-04-09T09:41:30.730Z
2018-04-09T09:41:30.730Z
MaT
<p>I discovered that some engines use <strong>derivative maps</strong> instead of <strong>tangent space normal maps</strong>.</p>

<p>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 ?</p>

<p>Is it possible to compare both with advantage and disadvantage ?</p>

CC BY-SA 3.0
2017-03-31T08:23:22.367Z
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
CC BY-SA 3.0
2017-03-31T08:56:47.627Z
One of the big factors of why things don't immediately get adopted is inertia and that the existing solution being good enough.
ratchet freak
<opengl><shader><texture><normal-mapping><directx>
Derivative maps vs. Tangent Space Normal maps
MaT
# Derivative maps vs. Tangent Space Normal maps

(Asked by: username_0 on 2017-03-30)

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 ?

**Tags:** opengl, shader, texture, normal-mapping, directx

> **Comments:**
> **username_0**: 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.  
> **username_1**: One of the big factors of why things don't immediately get adopted is inertia and that the existing solution being good enough.  

---

## 2 answers

### Answer by username_0 on 2017-04-06. Score: 5 | Accepted answer

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](https://twitter.com/BartWronsk) 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.

* [Mikkelsen and 3D Graphics: Derivative Maps | Morten Mikkelsen Blog](http://mmikkelsen3d.blogspot.fr/2011/07/derivative-maps.html)
* [Derivative Maps | CodeItNow](http://www.rorydriscoll.com/2012/01/11/derivative-maps/)
* [Derivative Maps vs Normal Maps | CodeItNow](http://www.rorydriscoll.com/2012/01/15/derivative-maps-vs-normal-maps/)
* [Triplanar Texturing with Derivative Maps | The Robot Seven](http://therobotseven.com/devlog/triplanar-texturing-derivative-maps/)
* [Derivative Normal Maps - What are they? | polycount.com](http://polycount.com/discussion/91605/derivative-normal-maps-what-are-they)
* [Derivative Maps | Knald Technologies Documentation](https://docs.knaldtech.com/doku.php?id=derivative_maps_knald)

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.

> **Comments:**
> **username_3**: 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.  
> **username_0**: Thanks for the comment @username_3 Are you talking about the fact of calculating tangents and binormals ? Could you tell me more about precomputed tangent space ?  
> **username_4**: Can you tell me why sharp edges cannot be represented with derivative maps and how severe the limitation really is?  

---

### Answer by username_2 on 2017-04-01. Score: 2

I assume that you're using precomputed height map derivatives rather than calculating them on the fly (for details see [this post](http://mmikkelsen3d.blogspot.com/2011/07/derivative-maps.html) 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).


---

