What people like caveman-jim still don’t get about tessellation…

Today I read this post by caveman-jim on the Rage3D forums:

“…NVIDIA have lots of smaller tessellators where AMD has a single unit (two in VLIW-4 Cayman). This works great for tessellation factors (the # of subdivision) between 4 and 16, but efficiency tails off above that. NVIDIA’s does the same thing, but they have less of a hit relatively, and in absolute terms still have higher performance. The problem is, its makes no effing difference to visual quality, most especially in the way Crysis 2 implemented tessellation (non-visible architecture). So the little increase in graphics detail that was added by using tessellation has a massive performance hit because of how badly done it was. Read the techreport’s article on it.

tl;dr – once tessellation makes triangles smaller than pixel level, or is used to create geometry that’s never seen, it’s visually useless but a performance hit.”

He makes a mistake here, have you already noticed it? I have also referenced the Tech Report article in my earlier post about Crysis 2 tessellation.

It uses a tool to display the Crysis 2 meshes in wireframe mode. Giving images such as this:

Now, what do we know about wireframes? We know that each line has a thickness of one pixel. This means that triangles of ~2 pixels wide or tall or smaller will become totally solid in wireframe mode, since the lines occupy more space than the entire polygon area. Hence, if the triangles were smaller than 1 pixel in size, you would see an entirely solid blob of geometry in wireframe mode. Do we see any of that in the screenshots? No we don’t (sure, we see some solidness around the edges, but that’s only logical… you are looking at an almost 90 degree angle, so even if the polys on the top and sides were relatively large, they’d still be squashed into very thin polygons because of the angle. Besides, the edges are exactly where tessellation is adding extra rounded detail in this case). In fact, no tessellation benchmark I have seen anywhere has produced entirely solid wireframes.

So I wish the myth of “triangles less than one pixel” would stop already. You can’t point to screenshots like these and claim subpixel triangles in the same post. The majority of triangles are clearly considerably larger than a pixel, because the black background is clearly visible. And even parts that do appear solid are not necessarily subpixel size. They’re just less than 3 pixels wide/high so that the lines at the edges are squeezing together. It’s still quite a way down from there to subpixel level.

Update: caveman-jim appears to have edited his post to respond to this blog. Obviously the response is flawed again. I was going to respond on his forum, but it appears that my reply disappeared within minutes after posting it. So I have just written it down in a new blog entry here.

This entry was posted in Direct3D, Hardware news, OpenGL, Software development and tagged , , , , , , . Bookmark the permalink.

13 Responses to What people like caveman-jim still don’t get about tessellation…

  1. Bonzai says:

    Another example of tesselation could be used for Deus Ex Human Rev. Apparently, the 6970 has a performance hit when you get up close to characters with tesselation on as it renders it to full (I guess) vs the 580 not having a hit at all. Could be a driver issue but I don’t think thats it. It always happens when you get closer to a model’s body if tessellation is enabled. Oh well.

  2. Hippo says:

    you should tell him that in the forum, I think it’s a little rude to just call him out on your blog that he might not read.

    • Scali says:

      I don’t see why I should tell him that in the forum. I post things on my blog because I can’t go around and register on every forum and post the stuff.
      People also discuss my blogs on forums all the time, rather than commenting on my blog directly. That’s just how the internet works. If you think he needs to know, then you should point him to my blog. I don’t care.

      The point is not whether or not he reads it, but that people in general get a clue about tessellation and stop repeating AMD’s lies about why tessellation is so slow on their hardware. Crysis 2, like every other tesesllation title out there, uses adaptive tessellation, and does not just generate subpixel triangles, wireframe screenshots everywhere prove that.

    • Scali says:

      He edited his post on the forum, responding to my blog… I tried to answer him on the forum, but apparently my reply just got deleted. Sad people… I think I need to call him out on my blog again then…

      • Hippo says:

        lol, i loved the thread resurrection. What made you come back to this?

      • Scali says:

        Well, I only just found out that he had edited his post, adding a new paragraph where he insults my knowledge.

        He thinks he’s such a smart cookie. What a loser.


    I love AMD Videos cards the most mainly because of the better visual quality on videos/pictures but they really do need to fix this in the Radeon HD 7000 series.

    • Scali says:

      My experience is not that AMD video cards have delivered better video quality recently.
      They score slightly better than nVidia in the HQV test, but that’s probably a case of benchmarketing (much like how Opera used to pride itself with being the first browser to score 100% in the Acid test. Not exactly a guarantee that it rendered all pages correctly).

      My experience with AMD video is that they often struggle with interlacing and such (my last Radeon was a 5770, which as far as I know has the same video decoding as the current 6000-series). I’ve found that nVidia generally delivers the same or better quality than AMD with ‘real world’ videos (as in: not the HQV test, but videos I actually play, DVDs, YouTube, TV recordings etc).


    “I’ve found that nVidia generally delivers the same or better quality than AMD with ‘real world’ videos (as in: not the HQV test, but videos I actually play, DVDs, YouTube, TV recordings etc).”

    I’m not saying your wrong i used to have a Nvidia 9500GT that i liked and i sold it for a ATI 4770(great for the money) and i had to wait 3 days until i could get my 4770 and my 9500GT was gone so i had to use my onboard ATI 4200 series card and i noticed right from the start that everything looked more colorful and clear. Ever since then i’ve been a total AMD geek when it comes to their visual Quality. But some people have different taste then others.

  5. You’re absolutely right, & this manner of erroneous remark can get a bit tired. People tend to overestimate the size of a pixel (somewhat of a surprising deductive mistake, as references to “mega-pixel” viewing surfaces have become common amidst the Eyefinity/Surround adoption). Just as the tessellation factor complaint in HAWX 2 by AMD was factually wrong, making from it an explicit talking point is unnecessary. HAWX 2 looks and plays flawlessly at 1600P beyond 60 frames/second on both Cayman variants. Crysis 2 subsequent the DX11 update did indeed run like shit, but not by virtue of weak tessellation on cinder-blocks.

    Scali, I’d love to hear your insight on this : http://www.cg.tuwien.ac.at/~ginko/REYES/100525_cs448s.pdf . Specifically, what do I want to know? Nothing; the reference to micropolygons simply provoked a quick dig through my bookmarks,

    • Scali says:

      There are some things in that paper that I don’t quite get… It claims that one cannot adaptively tessellate a surface into micropolygons in parallel. But you can: nVidia’s hardware is doing exactly that, with their PolyMorph engine.
      It keeps claiming that you cannot adaptively tessellate patches, but you can: the hull shader outputs the tesellation factors (this is where AMD’s drivers limit the tessellation detail: they clamp the tessellation factors after the hull shader).

      The rasterization story is pretty obvious: once your polygons are smaller than a pixel (micropolygon), you can simply ‘splat’ them, rather than using conventional rasterization techniques. This is why a REYES renderer will subdivide until ALL polygons are micropolygons. This way it can use the same rendering technique for everything.

      With hardware we are currently in a transitional phase (which AMD is needlessly holding up by not delivering adequate tessellation solutions… Crysis 2 has no performance problems in DX11 on nVidia hardware, not even on midrange parts like GTX460. It’s rather silly to claim that a game is using ‘too many polygons’. That’s like saying that any applications where Intel CPUs outperform AMD CPUs are using ‘too many calculations’. Nonsense, we are always striving for more performance. As long as part A can deliver that performance while part B cannot, there is no excuse for part B).
      Software mostly relies on larger polygons today, so GPUs need to keep that performance up. The current tessellation performance is not good enough to render everything at micropolygon level yet. So at this point, GPU designers cannot yet afford to spend a lot of die-area to optimized micropolygon rendering.
      However, as more and more games start to use tessellation, and polygons get smaller… combined with advances in GPU design and manufacturing, spending more die-area on micropolygon handling will be a good trade-off. Once tessellation and micropolygon rendering are efficient enough, the GPU could handle all legacy software with no tessellation/larger polygons through subdivision, and the conventional polygon rasterization hardware can be removed altogether.
      So I think that over time, GPUs will evolve into some kind of REYES-style accelerator.

      The irony of it all is that Beyond3D has shown that AMD’s hardware is actually slightly more efficient at handling small polygons than nVidia’s hardware is: https://scalibq.wordpress.com/2010/11/02/proof-of-what-i-said-in-my-previous-blog-from-an-unexpected-place/

  6. Pingback: AMD and tessellation: A difficult relationship | Scali's blog

  7. Pingback: Remember caveman-jim? | Scali's blog

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s