Sunday, January 31, 2010

Hardware Tessellation

I was thinking about the advantages of Hardware Tessellation. I can see mainly three: - CompressionReduces on-disk storage, system, video memory usage ->only the coarse mesh is storedAnimation data is only stored for the coarse mesh- Memory bandwidth GPU fetches only vertex data of coarse mesh through PCI-E bus -> higher vertex cache and fetch performance- ScalabilitySubdivision is recursive -> offers auto-LOD with adaptive metrics

With the DirectX 11 implementation it might also reduce the workload of the vertex shader because the shader transforms or animates only the coarse mesh. But if we add up the additional workload of the hull and domain shader it might be a wash.

For console developers, being able to store more world geometry on disc and in memory would be a great advantage. The reduction of the read memory bandwidth -while reading the data from memory- would also increase the efficiency.The main question is if tessellating the geometry puts such a huge workload on the GPU that it is not feasible. I would love to have some real-world data here ...

9 comments:

Hello,There is the Unigine benchmarck which feature such tesselation but I did not found performance test on the web.

If you have a DX11 card may be you can run it and at least give us the framerate difference w and w/o tesselation! (even if frame time in ms would have been better)

Also, I wonder which one is the fastest:- render LoD 0 with tesselation to LoD 10 (10 "subdivisions" on the GPU), or,- render LoD 5 with tesseleation to LoD 10 (5 "subdivision" on the GPU)But in the end, the rendered mesh could be visually different...

The biggest problem with tesselation is that you basically need to support it from the start. If you end up making the scene look great without it there is very little reason to do twice the work getting hardware tesselation going.

Here are some benchmarks of the Heaven Benchmark sebh.http://www.hardocp.com/article/2009/11/06/unigine_heaven_benchmark_dx11_tessellation/

You have to remember that without tesselation enabled all of the geometry is completely flat. So it is not comparable to real world results (as seen in Dirt 2 etc)

The hardocp numbers are interesting. Thanks for posting this. This is a substantial difference in performance. Looking at the Heaven Benchmark: it is probably not comparable to an open-world game level in size.

Tessellation in D3D11 isn't really recursive though. You have to specify tessellation per-patch, you can't say "okay, do one more iteration and ask me again for each sub-patch" like you'd need to do in order to get good adaptive LOD. Right now you'd have to pre-tessellate the control mesh to isolate the high detail areas and the flat areas into different patches so you can make a good decision per-patch ("this patch is flat"/"this patch is detailed"), you can't have a patch that's 99% flat with a spike in the middle that needs extra detail.

Not sure if this makes sense, but maybe a fourth reason for hw tess: make the GPU-created illusion of smooth surfaces available for algorithms that really only look at geometry.

Before our title had per pixel lighting, we had a phase where third party authors were manually over-tessellating meshes to reduce lighting error. With per pixel lighting this is unneeded.

But the over-tessellated meshes produced better GPU-generated shadows, since the silhouette is accurate.

If the "curve" of a triangle (per pixel, for lighting) comes from varying interpolation and not from the original art asset, tessellation with a scheme like PN-triangles could make an asset look equally "curved" for shadow map generation.

Hello,I get the whole concept of this tessellation process. But what I don't quite understand is the way the tessellation is being done. Can someone elaborate on the step by step process of the tessellation. As in, how, with what and such sorta questions. Would be great :)

P.S. Wolfgang Engel. You, sir are doing a great work ! Respect from India !!

Google+ Followers

About Me

Wolfgang is the CEO of Confetti. Confetti is a think-tank for advanced real-time graphics research and a service provider for the video game and movie industry.
Before co-founding Confetti, Wolfgang worked as the lead graphics programmer in Rockstar's core technology group RAGE for more than four years.
He is the founder and editor of the ShaderX and GPU Pro books series, a Microsoft MVP, the author of several books and articles on real-time rendering and a regular contributor to websites and the GDC. One of the books he edited -ShaderX4- won the Game developer Front line award in 2006.
Wolfgang is in the advisory boards of several companies. He is an active contributor to several future standards that drive the Game Industry.
You can find him on twitter at