[Tech] On GPUs, Tessellation and DX11
16 years ago
Like everything I write, this was initially... pages. So here's the condensed version.
Computer graphics. In all modern 3D games, they consist of texturing and lighting wireframes. Wireframes, things like these. Arrangements of triangles which represent solid surfaces.
In the past 10+ years, a lot of things have changed. In texturing, we used to just have one texture per object to give it the right color and pattern. Over time we've added bump mapping to simulate complex shadows caused by bumps and dips on otherwise flat surfaces, parallax mapping to let us see into those virtual dips and cracks, and specular and environmental mapping to tell the game how shiny surfaces are and what they should reflect. That's a big part of how we got from Half Life to Halo 3. So too have there been breakthroughs in lighting: where we once could only afford to have static lighting, we added volumetric shadows which show the shape of objects casting them, High Dynamic Range to make really bright objects seem brighter and better reflect how light interacts with our eyes, and even indirect lighting which allows light hitting objects to illuminate nearby objects--one of the reasons you never get a perfectly black shadow outside.
But you know what hasn't changed much? Those wireframes. Whether it's Mech Warior 2 or Cry Engine 3, our characters and powerups and landscapes are all ultimately the same wireframes, just varying in complexity. Sure, games will include multiple wireframes for everything these days, so you can see a zombie's individual fingers when they're up in your face but the computer doesn't waste time drawing every digit when they're a 100 yards off, but even that's a sloppy solution--what happens when you get really, really close to something, closer than the designers felt it worthwhile to add detail? Let's say you want to examine a trivial prop--maybe a faucet or a doorknob. In current games, the detail you see is limited to what the developers put in.
With any luck, that will soon change. With Windows 7 came the launch of DirectX 11. One of the features on that is hardware tessellation, which allows us to change and improve the way that we work with wireframes. Take a look at this. The model on the left was made by... I don't know, scanning somebody's head, or manually positioning the triangles. The model to the right of that, which is considerably more detailed, smooth, and realistic, was made entirely through an automated process (and the model all the way to the right was done with the same process applied a second time). Based on the 3D geometry of the original wireframe, the computer was able to divide each triangle into 4 smaller ones and calculate new positions for their corners to create a more curved and believable surface. It's the same stuff that Pixar does with their animated films to make sure characters don't have blocky noses and flat foreheads--they just make the triangles so tiny that you can't see any one individually. This is tessellation, and DirectX 11 brings support for it. This means that potentially, in a game which properly leverages this technology, you can get as close as you want to a curved surface and never see the flat shapes that make it up. Your computer just says "Uh oh, he's getting really close, we better make some more triangles!" and the object gets more detail. Obviously this won't be able to add extra details and imperfections to objects, like tire treads and bumps on somebody's skin, but your objects will be able to have smoother curves without the game developers wasting their time and storage space making a ten bajillion triangle wireframe for every pen cap and pebble in the game. Just imagine if your favorite games from a decade ago had this feature--you could play them today and while the textures might be blurry and the lighting simplistic, at least the character's hair, clothing, equipment, and the world around them would have reasonably smooth curves. It'd be much less painful to replay older games.
Of course, the other big plus for DirectX 11 adoption is that it means adopting the changes of DirectX 10 as well. A new shader model, more programable stuff you don't care about, geometery instancing, etc. The point is that it's updated and better, though with an adoption hampered by XP users stuck with DX9. With Windows 7 proving to be a pretty big hit (estimates are ~40 million units by the end of the year and another 140 million in 2010, but those are just estimates!), game developers will hopefully start developing for DX10/10.1/11 first and foremost... sooner rather than later. DirectX 9 was an exciting and evolutionary change in back in 2002, but we're coming up on its 7th birthday in about 3 weeks and I for one would be happy if it could retire before its 8th.
Questions, comments, always welcome. Or just geek out and share some cool video clips of pretty upcoming games. Also, please don't try to warp this into a "graphics vs gameplay" argument forum. That's so last year. A game should offer both. Finally, credit where credit is due:
kairhl initially and inadvertently prompted me to write this.
Computer graphics. In all modern 3D games, they consist of texturing and lighting wireframes. Wireframes, things like these. Arrangements of triangles which represent solid surfaces.
In the past 10+ years, a lot of things have changed. In texturing, we used to just have one texture per object to give it the right color and pattern. Over time we've added bump mapping to simulate complex shadows caused by bumps and dips on otherwise flat surfaces, parallax mapping to let us see into those virtual dips and cracks, and specular and environmental mapping to tell the game how shiny surfaces are and what they should reflect. That's a big part of how we got from Half Life to Halo 3. So too have there been breakthroughs in lighting: where we once could only afford to have static lighting, we added volumetric shadows which show the shape of objects casting them, High Dynamic Range to make really bright objects seem brighter and better reflect how light interacts with our eyes, and even indirect lighting which allows light hitting objects to illuminate nearby objects--one of the reasons you never get a perfectly black shadow outside.
But you know what hasn't changed much? Those wireframes. Whether it's Mech Warior 2 or Cry Engine 3, our characters and powerups and landscapes are all ultimately the same wireframes, just varying in complexity. Sure, games will include multiple wireframes for everything these days, so you can see a zombie's individual fingers when they're up in your face but the computer doesn't waste time drawing every digit when they're a 100 yards off, but even that's a sloppy solution--what happens when you get really, really close to something, closer than the designers felt it worthwhile to add detail? Let's say you want to examine a trivial prop--maybe a faucet or a doorknob. In current games, the detail you see is limited to what the developers put in.
With any luck, that will soon change. With Windows 7 came the launch of DirectX 11. One of the features on that is hardware tessellation, which allows us to change and improve the way that we work with wireframes. Take a look at this. The model on the left was made by... I don't know, scanning somebody's head, or manually positioning the triangles. The model to the right of that, which is considerably more detailed, smooth, and realistic, was made entirely through an automated process (and the model all the way to the right was done with the same process applied a second time). Based on the 3D geometry of the original wireframe, the computer was able to divide each triangle into 4 smaller ones and calculate new positions for their corners to create a more curved and believable surface. It's the same stuff that Pixar does with their animated films to make sure characters don't have blocky noses and flat foreheads--they just make the triangles so tiny that you can't see any one individually. This is tessellation, and DirectX 11 brings support for it. This means that potentially, in a game which properly leverages this technology, you can get as close as you want to a curved surface and never see the flat shapes that make it up. Your computer just says "Uh oh, he's getting really close, we better make some more triangles!" and the object gets more detail. Obviously this won't be able to add extra details and imperfections to objects, like tire treads and bumps on somebody's skin, but your objects will be able to have smoother curves without the game developers wasting their time and storage space making a ten bajillion triangle wireframe for every pen cap and pebble in the game. Just imagine if your favorite games from a decade ago had this feature--you could play them today and while the textures might be blurry and the lighting simplistic, at least the character's hair, clothing, equipment, and the world around them would have reasonably smooth curves. It'd be much less painful to replay older games.
Of course, the other big plus for DirectX 11 adoption is that it means adopting the changes of DirectX 10 as well. A new shader model, more programable stuff you don't care about, geometery instancing, etc. The point is that it's updated and better, though with an adoption hampered by XP users stuck with DX9. With Windows 7 proving to be a pretty big hit (estimates are ~40 million units by the end of the year and another 140 million in 2010, but those are just estimates!), game developers will hopefully start developing for DX10/10.1/11 first and foremost... sooner rather than later. DirectX 9 was an exciting and evolutionary change in back in 2002, but we're coming up on its 7th birthday in about 3 weeks and I for one would be happy if it could retire before its 8th.
Questions, comments, always welcome. Or just geek out and share some cool video clips of pretty upcoming games. Also, please don't try to warp this into a "graphics vs gameplay" argument forum. That's so last year. A game should offer both. Finally, credit where credit is due:
kairhl initially and inadvertently prompted me to write this.
FA+

I feel this should be pointed out... One of the practical uses of Tessellation.
Although I should point out, it's possible to do adaptive tessellation... so say you have a displacement map for a tile floor with extremely smooth tiles, it can make lots of polygons for the dips between tiles where there's actual deformation, and not make hundreds of completely level triangles for every flat tile face. I don't know if this can be done with the DX11 tessellation stuff, but it could potentially allow for every bit of detail while saving on performance.
And who the heck believes youtube comments? >___>
I was under the assumption that there was no hardware support for tessellation up until now (although hell, maybe ATI added it in recently in preparation?). Was this wrong?
And no, I'm more hyped at the Cobblestone on the wall, the floor and not the stairs.
Of course the cobblestones are way awesome, but that effect could still be produced today. Most of the time they'll do it with texture illusions and still keep the surface flat, sometimes they'll displace a high-poly mesh. They can do it, just not as elegantly :p
And Tessellation is just the "less streneous" measure to achieve that effect. It's an automatic function that transforms a static texture into something with depth. Meaning, lower power cards could avail of this effect when it would normally take four GPUs working in tandem just to give something similar.
I understand what Tessellation is :p I worked on a graphics project which was all about subdivision of meshes in a modeling program of our own design. This does it on the fly with hardware support to do it faster and with the guarantee that GPUs will have the ability to do it. I get that much o_o All I'm really wondering about in this comment thread of ours is why it was disabled in DX10.
You cant have it without a multi GPU setup. Tesselation? It's one card. <__<
I suppose the only question would be how will directX11 effect Graphics Processing? I know my laptop(my most advanced PC) has trouble with pixel shading, color correction, and particle effects because of the graphics chipset's limitations, but has no problems with standard meshes or high-dynamic range lighting. Will DX11 be able to cope to older graphics chipsets and cards, or will it be a bust for the older compy users?
That's perhaps one of the only pitfalls for adoption: game developers aren't going to be eager to make titles which won't work for people with Windows XP or pre-2010 graphics hardware. Nvidia failing to make it in time for the holiday season especially impacts this... still, it's better than DX11 NOT having tessellation support. Some day you'll have it, and it'll be better than... not having it.
Sucks to be a college student with hand-me-down computers. :/
You were talking about the technology that allowed for 3d graphics to become better and better, particularly for games. I made a point about web technologies that were out there that would theoretically allow a game to be created with without Flash: SVG and JavaScript come to mind.
I'm paranoid about Javascript because it doesn't live in a nice little box that I can kill with fire ._. Not so paranoid that I won't use Javascript on a website, but I dunno... something about me prefers for Flash to live in its own little world.
Non-tangential response: If you can't play DX10 titles today because you didn't want to touch Vista, then yes--Win7 will let you play existing DX10-enhanced titles. In the medium term it'll improve your ability to play "true" DX10 titles by speeding up the transition away from DX9. In the long term it'll hamper your ability to play DX10 titles if DX11 proves to have a very large install base and DX10 a relatively small one. I don't see that happening for several years though, because it's going to take a long time to flush out the current and legacy DX10/9 hardware.
I know that DX11 allows automatic backward compatibility with DX9, 10, and 10.1, I'm still not sure exactly what that means. Does it mean that people with high powered DX10 hardware will see true DX10 quality titles, or will there be no real difference between DX9 and 10, and all the eye candy with be in DX11?
I'm still not sure what to expect.
Uh, shorter answer... games certainly won't look or run WORSE, and they'll occasionally have improvements for DX10.
Leik me.
=) I been payin attention to every little bit how games are made since quake 1 I even used to make quake 2 maps here and there
I hope they get it right with this new direct x architecture and not a bunch of stupid bull like DX10
I mean, not that I really cared; I grabbed the Windows 7 RC.
A cubic map is a geometric (mathematical) projection used to distort a flat surface so it fits on a 3D (usually spherical) surface. I think you meant an environmental map -- an image used to represent the surroundings for display on a 3D surface. A cubic map is one of many different types of projections which can be used to distort an environmental map so it fits on the surface of an object.
In 3D graphics the word "map" has two meanings: the mathematical function used to distort a flat image so it fits on a 3D object, and the flat image that is drawn on that surface.
win7 ruls.^^
I like watching the evolution of graphics. Thanks to "Freeman's Mind" I'm more or less going through Half-Life again and while it does look good it doesn't look AS good as new stuff. But even new games like Modern Warfare 2, yeah, if you use the sniper scope to look at something unimportant, like a magazine laying on the ground, it's just...bleah. Seeing things cotinually improve is the name of the game if they want to find reasons to sell us new hardware. :)
Speaking of which...I'll need to upgrade to see all the beautiful stuff in a couple years. :O
Now to go into a COMA deciding which game to play next in my massive back catalog...
As for developing, the game Dirt 2 is going to be one of the first fully DX 11 games on the market. You can expect it just after Christmas, but before 2010
I already have DiRT 2, Steam says it's going to unlock in 4 days and 2 hours D:
But yeah, I really don't like Windows 7 for a few reasons. The biggest one is that it doesn't run well at all on 4 of my machines. Two of my machines are gigabyte board - AMD baised computers. My main computer is a Phenom / Nvidia computer (one I'm talking to you on now) and with it and my spare computer (gigabyte Athlon X2 / Nvidia build) about 40% of the start ups result in a BSOD. Also I have Windows 7 Ultimate (retail) and I also own Vista Ultimate 64. In windows 7 they took away a lot of features that I used and replaced them with things that I'll never use.
It just kind of seems like while Vista was made almost more for power users and gamers, Windows 7 was targeted at some teenage chick talking on her cell phone while pulling pictures off her cell phone onto a laptop using Win 7. it's like they're kind of trying to make an OS for this really generic style of computing. Also industry standard software like Avid really really hates Windows 7 but is absolutely fine running on Vista (I had to go back to Vista 64 on this machine because of that)
But one would think it was a AMD/Gigabyte problem, but I also have a Dell Studio that runs a Core 2 duo and my dad's gaming system downstairs which is a Asus/Core 2 Quad build. and Windows 7 for whatever reason just freezes on the Core 2 quad, I've tried to figure it out but it's hopeless. and the Dell Studio runs it kind of okay, though Windows 7 while needing less ram, seems like it needs more CPU because the 2.2GHz Core 2 duo chugs badly.
I mean I know a lot of people say Win 7 is so stable. but I certainly find that not to be true. Vista fully updated to SP2 and DX11 is like... the most stable Microsoft OS ever right now. (even though it takes up a stupid amount of Disk space.) It's not like I don't know my way around Windows 7. I even attended "the new efficiency" IT Professional technical briefing for Windows 7 on Oct 5th or something. I know a ton about the really complex stuff you can do in Win 7 from a technical standpoint. But in the end as a user, it really seems to be lacking. I'll probably get flamed for this post but whatever XD
I don't know why you have performance and stability issues, but from all the positive reviews I've heard and the half dozen installations we have in this apartment, I just don't think that's the norm at all. I don't know what's wrong with your hardware, but it has nothing to do with it being a Core 2 Duo or Quad (as I'm running both).
It has nothing to do with the Core 2, Athlon X2 or Phenom's. What I'm assuming is that it's a problem with Nvidia cards. 3 of the 4 systems are running Nvidia (GTS 250, 9800GT, 8800GTS) So it might be a problem with 7 accepting those chips on my specific motherboards. I have a friend with a GTX 260 that does have the same problems as I do. but he's on a i5, gigabyte mobo with the 260. Also Windows XP mode is really bitchy about some things. I originally thought there was a problem with my disc, so Microsoft shipped me out another brand new 64bit copy of 7 ultimate and it still didn't fix the problem. I mean it can't be the PC because Windows XP, Ubuntu 64 and Vista 64 all run just fine on it.
Defender was stripped down because... I don't even know. Does it matter on any regular basis? And wasn't Defender stripped down in Vista, too? Yeah, they got rid of the Ultimate Add-ons... no dreamscene, which is sad I guess, but... not really dumbed down. There's not much reason for a normal person to get Win7 Ultimate, which is just fine by me given its price.
It's a shame if XP mode doesn't work up to your hopes, but really, that doesn't make the product any worse because you're not paying for it nor are you missing out on it relative to Vista.
There is also no real advantage to even getting Win 7 Pro either, really the only truly useful edition is Windows 7 Home which doesn't have that many features. there is Win 7 Enterprise but who in the hell buys that other than huge cooperations for workstation computers? And as I said before. that 1fps isn't really going to make a difference. point was though technically it's still faster, however on Windows 7 playing far cry two (max settings) I get about 42fps average on the benchmark. on Vista I'm getting 46 so I think there's driver problems for 7 right now through Nvidia as well.
And so far from every technical user I've talked to, XP mode really doesn't function well at all. The product that is Windows 7 really isn't all that good of a product, it's pretty clear and simple. A lot of people boast about how ohh so amazing Windows 7 is, but most people also just do gaming, email and internet surfing. I do all of that, plus a lot of work on my computers as well. I have programs that make my computer just crawl badly, more than any game can even hope to piss off your computer XD and when it comes to those things Windows 7 starts to have issues.
If you're just a general user and get a pre built computer with windows 7 home on it or something, great that should work for you. if you need to actually work hard with a system you need Vista/XP
We're just going to have to agree to disagree on this one. Plus I'm assuming you use Windows 7 for gaming and email and the like. Where as I do that but also kind of retarded workstation stuff as well (mainly video editing and developing for several large companies as well as a lot of consulting and conceptual work with buildings) Windows 7 tried to make a good workstation environment but they failed pretty bad with it. Windows 7 should be just for home general users.
Twile wrote:The point is that it's updated and better, though with an adoption hampered by XP users stuck with DX9.
It will still be hampered because the real driving force of video games, monetarily, is on consoles and not PC. And since Microsoft and Sony aren't too keen on continuing the hardware arms race given how successful the Wii is...
In any case, although there might not be the immediate and complete switch towards DX11 and the tessellation, I think it would be strongly in Microsoft's favor. ATI's got the leg-up in hardware, and clearly Microsoft feels it's important to the future of compelling computer graphics or they wouldn't put it in DX11. So when they come out with a 360 successor, developers will hopefully already be using tessellation and it can be given full hardware support. In the same way that the PC was a testing grounds for DX9 features and perfecting DX9 hardware during the 2002-2005 period almost certainly helped with the 360's DX9-capable hardware, the PC will again help to drive software and hardware adoption of DX11 over the next few years leading up to a 360 successor.
At least, that's my speculation.
check this out! X3
http://i546.photobucket.com/albums/.....1600_16003.jpg
http://i546.photobucket.com/albums/.....01600_1600.jpg
AMD 64 x2 6400+ 3.4 ghz OC
ATI hd 3850
4gb ram =3
let's put it like this:
vista < XP <win7 beta <win7 final
remember: is only my own opinion.. ^^
XP < Vista < 7
http://www.driverheaven.net/article.....p;amp;pageid=1