So What's a Tessellator?

This has been covered before now in other articles about DirectX 11, but we first touched on the subject with the R600 launch. Both R6xx and R7xx hardware have tessellators, but since these are proprietary implementations, they won't be directly compatible with DirectX 11 which uses a much more sophisticated setup. While neither AMD nor the DX11 tessellator itself are programmable, DX11 includes programmable input to and output from the tesselator (TS) through two additional pipeline stages called the Hull Shader (HS) and the Domain Shader (DS).

The tessellator can take coarse shapes and break them up into smaller parts. It can also take these smaller parts and reshape them to form geometry that is much more complex and that more closely approximates reality. It can take a cube and turn it into a sphere with very little overhead and much fewer space requirements. Quality, performance and manageability benefit.

The Hull Shader takes in patches and control points out outputs data on how to configure the tessellator. Patches are a new primitive (like vertices and pixels) that define a segment of a plane to be tessellated. Control points are used to define the parametric shape of the desired surface (like a curve or something). If you've ever used the pen tool in Photoshop, then you know what control points are: these just apply to surfaces (patches) instead of lines. The Hull Shader uses the control points to determine how to set up the tessellator and then passes them forward to the Domain Shader.

The tessellator just tessellates: it breaks up patches fed to it by the Hull Shader based on the parameters set by the Hull shader per patch. It outputs a stream of points to the Domain Shader, which then needs to finish up the process. While programmers must write HS programs for their code, there isn't any programming required for the TS. It's just a fixed function block that processes input based on parameters.

The Domain Shader takes points generated by the tessellator and manipulates them to form the appropriate geometry based on control points and/or displacement maps. It performs this manipulation by running developer designed DS programs which can manipulate how the newly generated points are further shifted or displaced based on control points and textures. The Domain Shader, after processing a point, outputs a vertex. These vertices can be further processed by a Geometry Shader, which can also feed them back up to the Vertex Shader using stream out functionality. More likely than heading back up for a second pass, we will probably see most output of the Domain Shader head straight on to rasterization so that its geometry can be broken down into screen space fragments for Pixel Shader processing.

That covers what the basics of what the tesselator can do and how it does it. But do you find your self wondering: "self, can't the Geometry Shader just be used to create tessellated surfaces and move the resulting vertices around?" Well, you would be right. That is technically possible, but not practical at this point. Let's dive into that a bit more.

Going Deeper: The DX11 Compute Shader and OpenCL/OpenGL Tessellation: Because The GS Isn't Fast Enough
Comments Locked

109 Comments

View All Comments

  • Havor - Saturday, January 31, 2009 - link

    DX10 is Vista only ware XP and 98SE/win2k shared a common DX

    And yeah XP was Win2K but it had better gaming support then W2K so there was no reason not to use XP over W2K, and only very old games gave some problems whit XP over 98SE.

    Ware Vista almost had no RL benefits over XP just a high resource hog and steep learning curve.

    If people could had a those between XP and vista i think Vista Nr's would have bin 75% lower

    Other then DX10 and x64 there is no reason for me to go to Vista, so i will wait for Win7 and upgrade to i7/i5 till then my X2 6000+ and XP sp3 will do
  • michal1980 - Friday, January 30, 2009 - link

    i agree with most of your logic. And it makes sense. It didn't feel right with the rest of the article though.


    I will however disagree with it being compared to Win ME.

    Win ME was just junk, unstable, worthless, and never improving. And while vista had teething issues, alot of it was due to a huge shift in the actual OS.

    I haven't tired 7 yet, but from all I read,it seems like vista re-tuned. However I doubt Win7 could have ever gotten to where it is without Vista. Vista was a trail by fire, and in most cases it made it. A huge problem early on was hardware specs to run it were set too low, and it was hell for people on cheap low end hardware.

    My experance has been overall very postive, esspically when I moved to 4gb's of ram. Driver problems now are minimal (x64), and no matter how stable XP ever was. IMHO, and in my experance, vista has been leaps and bounds more stable. I can't recall having an OS crash/lock up that required a reboot. If not for hardware changes/updates, my vista box would never reboot.
  • Havor - Saturday, January 31, 2009 - link

    The compering to ME holds up some bid, do vista is not as bad as ME was.

    How ever on my computer club there was a 100% return to 98SE ore win2k, most users(70%) here that run dual-boot Vista/XP machine, returned to XP after trying Vista for a wile (me included)

    And there has never bin Any love for the OS especially compared to XP.

    The bigger problem for dev. is that DX10 is Vista only, and there are way to many XP machines out there to develop DX10 only games, so from a dev. point of view Vista was/still is the next ME.
  • just4U - Wednesday, February 4, 2009 - link

    WinME is what Vista will eventually be compared to no matter what. I had less problems with WinME then I did with 98, or 95 but it got a bad rap.. Nowadays people just all say it was crap. Im sure 5-7+ years from now they will say the exact same thing about Vista. (shrug)
  • marsbound2024 - Friday, January 30, 2009 - link

    I agree with what you have said. Microsoft had years to develop Vista where previously its OS releases came within two years of each other. It should have been optimized at the very least and we have seen that it is resource-intensive and one might even say "bloated." While Vista does work and I rather like working with Vista 64-bit, I think it should have been more than what it is for having such a lengthy development timeframe. While many of us superbly informed on computer operating systems and application support, the average consumer seems to really dislike Vista. From UAC to horrible startup times on occasion (usually due to services such as Cyberlink), to the network connectivity problems that seem to be related to IPv6 and the fact that it used to bring budget systems to their knees (when they were manufactured with the purpose of running Vista), most people have a bad taste in their mouths from running Vista. Vista had a lot of promise on the table from what was on paper, but in execution it simply generated more headaches than it should have. Windows 7 should hopefully be getting back to what an operating system should be: streamlined GUI with robust, yet optimally programmed features that range from security to file management on NTFS.
  • srp49ers - Friday, January 30, 2009 - link

    The vista comments seemed out of place considering the tone of the rest of the article.
  • Cuhulainn - Friday, January 30, 2009 - link

    Agreed. Even if you think it sucks, give the reasons related to the article. I would like to know what issues there are between Vista/DirectX, as I am a current user. Rather than being told that what I am running sucks, tell me what is wrong with it, or what is right with 7 that is an improvement over Vista.

    That being said, I have little to no knowledge of these things and still found this to be an interesting read. Much appreciated.
  • Staples - Saturday, January 31, 2009 - link

    And the fact that a year ago, most people who said that Vista sucks are ones who unsurprisingly never actually used it. When someone says Vista sucks, I always think there is a high probablility that they are someone who has never used it (and therefore stupid for saying something like that). Anyway, I have been using Vista since it came out and except for the fixes which made it use less resources, there never has been anything wrong with the OS despite what the legion of "I read it on the internet so it must be true" people would have you believe. Seems like the majority of geeks thought it sucked without having ever used it which is just idiotic. When I realized this, it was sad to know how gulible people really are.
  • ssj4Gogeta - Friday, January 30, 2009 - link

    It will be great if MS releases DX11 for XP. I multi-boot XP and Vista and Ubuntu. I think I'll replace Vista with Win 7 and not XP.

    By the way, why haven't we heard anything about Larrabee? Intel said that the first samples would be ready by the end of 2008. It seems to me like it will be a revolutionary step in graphics computing.
  • Ryan Smith - Friday, January 30, 2009 - link

    It won't happen, it can't happen. DX10 goes hand-in-hand with a massive rearchitecting of GPU threading and memory management, which is why we transitioned from the XPDM to WDDM for Vista. You can't backport that kind of stuff, it's a fundamental change in how the OS addresses the GPU and allocates work & resources for it.

Log in

Don't have an account? Sign up now