<p>An answer with details gotten elsewhere:</p>

<ul>
<li>It's bad on mobile: ARM doesn't have a tessellation unit so is emulated in software. Tiled based architectures will write vertex data to main memory before pixel shading which is a bandwidth issue. qualcom switches to direct rendering mode if you enable tessellation which isn't cheap.</li>
<li>It's bad on AMD / Console</li>
<li>There is complexity in setting the tessellation factors to give good results </li>
<li>it sounds like it's difficult not to get too much resolution in some ways (aliasing), and not enough in others (low quality results). You essentially need to know screen space derivatives of vertices to calculate good tessellation factors, and this is not easy to get even decent approximations of.</li>
<li>A bummer about tessellation shaders is that they basically work by sampling discrete sample points (at vertices) so for a better result, you need a denser mesh to start with, which sort of defeats the purpose of dynamic tessellation.  Can be addressed a bit with mipmapping type strategies.</li>
<li>Tessellation is still used by major games in specific cases though, and terrain does seem to be one usage case</li>
</ul>

CC BY-SA 4.0
2018-08-23T21:21:26.117Z
2018-08-24T21:04:18.447Z
2018-08-24T21:04:18.447Z
Alan Wolfe
<p>I often hear that tessellation shaders aren't great for performance reasons. Something along the lines that if you try to use a tessellation shader, you'll find that the data you get out isn't sufficient and you'll have to re-do calculations anyways. Or it might have been that this path was less efficient than going another route and wasn't a good use of bandwidth?</p>

<p>Can anyone explain the details of why tessellation shaders are not advised, and if there are any exception cases where tessellation is a good thing?</p>

CC BY-SA 4.0
2018-08-23T19:04:27.827Z
I'll post an answer after gathering all the info, in case nobody else does, but here's a breadcrumb trail to more info in the meantime: https://twitter.com/Atrix256/status/1032666876264894464
Alan Wolfe
CC BY-SA 4.0
2018-08-23T22:14:31.933Z
"*I often hear that tessellation shaders aren't great for performance reasons.*" From whom? For what reasons? Where does this particular accusation come from? Basically, what is the foundation for this question?
Nicol Bolas
CC BY-SA 4.0
2018-08-23T22:22:25.580Z
SIGGRAPH presentations mostly
Alan Wolfe
CC BY-SA 4.0
2018-08-24T14:04:49.887Z
@AlanWolfe which one in particular? If you see it a lot in SIGGRAPH you should be able to point it out quite promptly and give us a specific reference.
Krupip
CC BY-SA 4.0
2018-08-24T16:44:07.533Z
I don't have a reference nope. If you think my question is invalid, go check the responses on twitter from seasoned well known graphics folks explaining the answer. It's a real thing.
Alan Wolfe
<shader><performance>
Why are tessellation shaders disliked?
Alan Wolfe
# Why are tessellation shaders disliked?

(Asked by: username_0 on 2018-08-23)

I often hear that tessellation shaders aren't great for performance reasons. Something along the lines that if you try to use a tessellation shader, you'll find that the data you get out isn't sufficient and you'll have to re-do calculations anyways. Or it might have been that this path was less efficient than going another route and wasn't a good use of bandwidth?

Can anyone explain the details of why tessellation shaders are not advised, and if there are any exception cases where tessellation is a good thing?

**Tags:** shader, performance

> **Comments:**
> **username_0**: I'll post an answer after gathering all the info, in case nobody else does, but here's a breadcrumb trail to more info in the meantime: https://twitter.com/Atrix256/status/1032666876264894464  
> **username_1**: "*I often hear that tessellation shaders aren't great for performance reasons.*" From whom? For what reasons? Where does this particular accusation come from? Basically, what is the foundation for this question?  
> **username_0**: SIGGRAPH presentations mostly  
> **username_2**: @username_0 which one in particular? If you see it a lot in SIGGRAPH you should be able to point it out quite promptly and give us a specific reference.  
> **username_0**: I don't have a reference nope. If you think my question is invalid, go check the responses on twitter from seasoned well known graphics folks explaining the answer. It's a real thing.  

---

## 1 answers

### Answer by username_0 on 2018-08-23. Score: 3 | Accepted answer

An answer with details gotten elsewhere:

* It's bad on mobile: ARM doesn't have a tessellation unit so is emulated in software. Tiled based architectures will write vertex data to main memory before pixel shading which is a bandwidth issue. qualcom switches to direct rendering mode if you enable tessellation which isn't cheap.
* It's bad on AMD / Console
* There is complexity in setting the tessellation factors to give good results
* it sounds like it's difficult not to get too much resolution in some ways (aliasing), and not enough in others (low quality results). You essentially need to know screen space derivatives of vertices to calculate good tessellation factors, and this is not easy to get even decent approximations of.
* A bummer about tessellation shaders is that they basically work by sampling discrete sample points (at vertices) so for a better result, you need a denser mesh to start with, which sort of defeats the purpose of dynamic tessellation. Can be addressed a bit with mipmapping type strategies.
* Tessellation is still used by major games in specific cases though, and terrain does seem to be one usage case


---

