Tessellation: Because The GS Isn't Fast Enough

Microsoft and AMD tend to get the most excited about tessellation whenever the topic of DX11 comes up. AMD jumped on the tessellation bandwagon long ago, and perhaps it does make sense for consoles like the XBox 360. Adding fixed function hardware to quickly and efficiently handle a task that improves memory footprint has major advantages in the living room. We still aren't sold on the need for a tessellator on the desktop, but who's to argue with progress?

Or is it really progressive? The tessellator itself is fixed function rather than programmable. Sure, the input to and output of the tessellator can be manipulated a bit through the Hull Shader and Domain Shader, but the heart of the beast is just not that flexible. The Geometry Shader is the programmable block in the pipeline that is capable of tessellation as well as much more, but it just doesn't have the power to do tessellation on any useful scale. So while most everything has been moving towards programmability in the rendering pipe, we have sort of a step backward here. But why?

The argument between fixed function and programmable hardware is always one of performance versus flexibility and usefulness. In the beginning, fixed function was necessary to get the desired performance. As time went on, it became clear that adding in more fixed function hardware to graphics chips just wasn't feasible. The transistors put into specialized hardware just go unused if developers don't program to take advantage of it. This made a shift toward architectures where expanding the pool of compute resources that could be shared and used for many different tasks became a much more attractive way to go. In the general case anyway. But that doesn't mean that fixed function hardware doesn't have it's place.

We do still have the problem that all the transistors put into the tessellator are worthless unless developers take advantage of the hardware. But the reason it makes sense is that the ROI (return on investment: what you get for what you put in) on those transistors is huge if developers do take advantage of the hardware: it's much easier to get huge tessellation performance out of a fixed function tessellator than to put the necessary resources into the Geometry Shader to allow it to be capable of the same tessellation performance programmatically. This doesn't mean we'll start to see a renaissance of fixed function blocks in our graphics hardware; just that significantly advanced features going forward may still require the sacrifice of programability in favor of early adoption of a feature. The majority of tasks will continue to be enabled in a flexible programmable way, and in the future we may see more flexibility introduced into the tessellator until it becomes fully programmable as well (or ends up just being merged into some future version of the Geometry Shader).

Now don't let this technical assessment of fixed function tessellation make you think we aren't interested in reaping the benefits of the tessellator. Currently, artists need to create different versions of their objects for different LODs (Level of Detail -- reducing or increasing complexity as the object moves further or nearer the viewer), and geometry simulation through texturing at each LOD needs to be done by pixel shaders. This requires extra work from both artists and programmers and costs a good bit in terms of performance. There are also some effects than can only be done with more geometry.

Tessellation is a great way to get that geometry in there for more detail, shadowing, and smooth edges. High geometry also allows really cool displacement mapping effects. Currently, much geometry is simulated through textures and techniques like bump mapping or parallax occlusion mapping or some other technique. Even with high geometry, we will want to have large normal maps for our lighting algorithms to use, but we won't need to do so much work to make things like cracks, bumps, ridges, and small detail geometry appear to be there when it isn't because we can just tessellate and displace in a single pass through the pipeline. This is fast, efficient, and can produce very detailed effects while freeing up pixel shader resources for other uses. With tessellation, artists can create one sub division surface that can have a dynamic LOD free of charge; a simple hull shader and a displacement map applied in the domain shader will save a lot of work, increase quality, and improve performance quite a bit.

If developers adopt tessellation, we could see cool things, and with the move to DX11 class hardware both NVIDIA and AMD will be making parts with tessellation capability. But we may not see developers just start using tessellation (or the compute shader for that matter) right away. Because DirectX 11 will run on down level hardware and at the release of DX11 we will already have a huge number cards on the market capable of running a subset of DX11 bringing with it a better, more refined, programming language in the new version of HLSL and seamless parallelization optimizations, we will very likely see the first DX11 games only implementing features that can run completely on DX10 hardware.

Of course, at that point developers can be fully confident of exploiting all the aspects of DX10 hardware, which they still aren't completely taking advantage of. Many people still want and need a DX9 path because of Vista's failure, which means DX10 code tends to be more or less an enhanced DX9 path rather than something fundamentally different. So when DirectX 11 finally debuts, we will start to see what developers could really do with DX10.

Certainly there will be developers experimenting with tessellation, but these will probably just be simple amplification to get rid of those jagged edges around curved surfaces at first. It will take time for the real advanced tessellation techniques everyone is excited about to come to fruition.

So What's a Tessellator? One Last Thing and Closing Thoughts
Comments Locked

109 Comments

View All Comments

  • bobjones32 - Saturday, January 31, 2009 - link

    Derek, Vista has been out for only 2 years. Take a look at XP's first two years and it was a phenomenal disaster comparatively. How people forget its far more significant performance and driver compatibility issues, and of course the Blaster worm, is totally beyond me.

    Just look at some of the nightmares: http://community.winsupersite.com/blogs/paul/archi...">http://community.winsupersite.com/blogs...8/06/30/...

    Business uptake? Initial consumer uptake? Driver support? Gaming speed? Security? Compatibility? Vista's first two years have been incredibly successful compared to XP's first two years.

    The difference? In 2001, sensationalist blogging making mountains out of molehills and purporting endless false perceptions without significant evidence wasn't nearly as popular. Apple's ads that only fed into peoples' ignorance only helped that false perception grow.
  • Zoomer - Monday, February 2, 2009 - link

    Compare XP to 98SE.
    Now compare Vista to XP.

    We have to take things in context.
  • CvP - Saturday, January 31, 2009 - link

    TOTALLY AGREE.

    well said.
  • Goty - Saturday, January 31, 2009 - link

    So the gist of this comment (Derek's) is that Vista doesn't suck, but you still say, "Vista sucks."

    I'm confused now.

    Anyhow, I personally agree with the other people in the section that say Vista is a great operating system. I installed it in January of '07 and the only change I've made is to move from Business to Ultimate (thanks to the fact that I was using an ATI video card at the time and the fact that they didn't slack off on their driver development).
  • DerekWilson - Saturday, January 31, 2009 - link

    Actually, that's an apt statement.

    Vista is currently something it was not initially. This made it "suck" in the hearts and minds of many people at the start, damaging the Windows brand and frustrating users. While, as I said, those issues are largely gone post SP1. This impacted Microsoft's ability to inspire confidence in the industry that everyone would eventually move to a platform that ran DX10, whether or not the OS eventually got to a stable place.

    In spite of this, I use Vista: I have 6GB of RAM and I'm interested in DX10 for the sake of DX10 personally. I'm a bit of a technologist and I like things for the sake of the thing, really, but that doesn't mean that MS didn't drop the ball in their delivery of Vista.
  • just4U - Wednesday, February 4, 2009 - link

    What made it suck in the hearts and minds of many people was the refusal to move away from what they allready knew. Changing your operating system has always brought alot of grumbling from the majority... but it's even more overstated with XP which has been around and in wide use far longer then previous Microsoft Operating systems.

    The beta form of Vista I found to be buggy as hell.. But ofcourse I was testing it on a 1800+ Tbird with 1G of ram. Later when I adopted it (before sp1) it was fine with very few problems. I'd even go as far as saying way way less then what XP had at launch.
  • CvP - Saturday, January 31, 2009 - link

    and XP was much better *when* it was released?!
    until XPsp1, it was a piece of shit.
    until XPsp2, it wasn't worth switching to XPsp2.


    and all those lack of driver etc..it was not MS's fault.
  • poohbear - Saturday, January 31, 2009 - link

    "calling it like it is"? i have vista64 premium and i much prefer it to win XP. I have the hardware to run it flawlessly ofcourse, and in that context it's anything but "sucks". would never go back to XP, so please vista has come a looooooong way and doesnt need superfluos opinions like this in 2009.
  • mechBgon - Saturday, January 31, 2009 - link

    Derek, if you take a look at Valve's monthly user survey, the ratio of Vista to WinXP users is now at about 1 to 2.1 and climbing by the month. That's not what I'd call "rejection of Vista." I think you've been reading The Inq too much :)

    As for your remark about Vista being a "WinME," I disagree. WinXP was the WinME of this era; it was basically Win2000 with a few bonus features, like WinME was a makeover of Win98SE. Once WinXP SP2 was released, *then* WinXP actually had some real merit over Win2000 in the security department, but that was late in the game.

    Vista, however, is a paradigm shift, a watershed in Windows history. Stuff is not run at Admin level by default anymore, and never will be again. Pulling that off without breaking 80% of the existing software in the world was an amazing accomplishment that involved virtualizing the Registry and file system (a little-known facet of UAC, as it happens).


    This is another misguided factoid:

    "MS recognized that they had a problem and implemented and extended again and again downgrade options to Windows XP for customers who were unsatisfied with Vista."

    Well heck, OEM Windows XP Pro comes with downgrade rights to run Win98 or WinME. It's not a backpedalling measure, nor a confession that WinME is better than WinXP. That's normal Microsoft policy so customers can license the current OS but use the previous version, temporarily or permanently, for whatever reason.

    There will be downgrade rights with the appropriate versions of Windows 7, too.
  • suryad - Thursday, February 5, 2009 - link

    I am not so sure you can just take Valve's survey which is just predominantly consisting of gamers as a good statistic. Thats just my 2 cents. An OS is not just meant for gaming...sure thats a good amount of Vista users in the survey but what about the rest of the people who are not gamers? I am pretty confident that most people who are on Vista and are on the Steam survey are/were sold by the appeal of DX 10 and next generation gaming and graphics and all that.

Log in

Don't have an account? Sign up now