6
$\begingroup$

Tessellation has been touted as one of the major features in newer graphics APIs like DirecX 11, and it is shown as a standalone stage in a modern graphics pipeline.

Compared to the amount of hardware and software attention given to this feature, it doesn't seem to be heavily used in real-time graphics. So this doesn't seem to be a feature that arose out of graphical demand.

Then why did tessellation become such a prominent feature? To cater to the demands of non-realtime rendering? As a side-effect of the increasing shift in GPU architecture as generalized parallel processors in heterogeneous computing? Or is this a forward-thinking feature that will be used in graphics as tessellation-capable GPUs become increasingly common?

$\endgroup$
0

2 Answers 2

0
$\begingroup$

History: ATI Introduced PN triangles (a basic approach to tessellation) in its first generation to include programmable HW - so it's been around about as long as programmable HW shaders. It was deprecated in ATI's next generation, but tessellation was revived in the HW that became the basis of the Xbox 360 (a few ATI demos showed it off on PCs). Microsoft then incorporated the feature into DX11 (although not compatible with ATI/AMD's existing HW), making tessellation support a de-facto requirement for all GPU makers.

$\endgroup$
4
  • $\begingroup$ This doesn't really seem to adress the actual question much at all. $\endgroup$ May 10, 2016 at 9:51
  • $\begingroup$ I added it as a comment and the original questioner asked me to promote it to an answer. See questioner's comment below... $\endgroup$
    – user2500
    May 10, 2016 at 14:28
  • 1
    $\begingroup$ My question was about why a seemingly underused feature like tesselation has gotten so much API attention. RichieSams' answer talks more about what tesselation is, rather than explaining how it got to be so important. The above answer is the best answer I've gotten so far. $\endgroup$
    – ApoorvaJ
    May 11, 2016 at 4:52
  • $\begingroup$ Another aspect is that geometry shaders (flexible enough to implement tessellation, and available in DX10), are extremely hard to implement efficiently in HW. My understanding is the main issue is the in-order processing of the output from each input primitive means executing geometry shaders in parallel requires substantial buffering. A fixed function tessellator turned out to be far more efficient. $\endgroup$
    – user2500
    May 11, 2016 at 16:52
11
$\begingroup$

The main purpose of tesselation is to increase the resolution of the mesh, while only transferring a small amount of triangle data around. In addition, tessellation allows you to dynamically change the LOD of the mesh, so you can optimize your shader calls.

So, we can pass the GPU, say, 3000 triangles, and have it tesselate it to 300000 triangles. We are essentially trading storage space/bandwidth for compute power. Since GPUs have lots and lots of compute, and memory is limited/slow, this is a pretty good tradeoff.

As for "not being heavily used in real-time graphics". I somewhat disagree. Many AAA games have been using tessellation for a long time. That said, tessellation is hard to get right. Done wrong, tesselation can lead to lots of problems, such as cracking, or over tessellating to sub-pixel triangles, which destroys your fill rate.

Combined, these problems make it difficult to implement good and fast tessellation for your everyday person. Thus, most of the uses of tessellation you see nowadays are in AA or AAA games, game engines, and offline rendering tools.

That said, there is active research going on that is trying to better utilize the tessellation hardware, and make it easier to use. For example: Efficient GPU Rendering of Subdivision Surfaces using Adaptive Quadtrees

In the end, tessellation is a great feature, but is difficult to get right

$\endgroup$
1
  • $\begingroup$ This is a great and informative answer, but Daniel's answer talks more about the tesselation in a historical context, which is what my question was really about. But thanks your answer. :) $\endgroup$
    – ApoorvaJ
    May 7, 2016 at 10:07

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

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