6
$\begingroup$

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?

$\endgroup$
  • $\begingroup$ 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: twitter.com/Atrix256/status/1032666876264894464 $\endgroup$ – Alan Wolfe Aug 23 '18 at 19:04
  • 4
    $\begingroup$ "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? $\endgroup$ – Nicol Bolas Aug 23 '18 at 22:14
  • $\begingroup$ SIGGRAPH presentations mostly $\endgroup$ – Alan Wolfe Aug 23 '18 at 22:22
  • $\begingroup$ @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. $\endgroup$ – opa Aug 24 '18 at 14:04
  • 1
    $\begingroup$ 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. $\endgroup$ – Alan Wolfe Aug 24 '18 at 16:44
3
$\begingroup$

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
$\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.