Sign in to follow this  
16bit_port

Tessellation papers

Recommended Posts

Does anyone know of any good resources (white papers, academic papers, books, videos, etc) on tessellation that explains how it works (describing control points, patches, etc)?

I want to be able to subdivide a single quad with the use of the hull and domain shaders.

This is good and all but without any understanding of how exactly tessellation works, its of no help.

Thank you.

Share this post


Link to post
Share on other sites
Thanks for the link. What exactly are patches? They don't really explain what they are. Are they just a collection of primitives or something?

Also, after reading these two papers AMD1 and AMD2, and looking at the How to's, none of them really explained what I should be doing in the Hull and Domain shaders and/or provide any examples doing so. Does anyone have any resources on that?

Share this post


Link to post
Share on other sites
Thanks, amerkoleci. Excellent read (minus some of the broken English and typos)!

Regarding the pipeline : Both the two AMD papers say that the tessellation stage occurs BEFORE the vertex (HULL->TESSELLATOR->DOMAIN->VS), but the paper that amerkoleci referred to, says quite the opposite (VS->HULL->TESSELLATOR->DOMAIN), which one is right?

EDIT : Okay, I re-read the first AMD paper (the one that MJP suggested), it occurs BEFORE the vertex shader in the 9 and 10 pipeline. It occurs AFTER in the 11 pipeline.

Regarding the control points : If I specify control points of more than 4, what do I specify for the domain attribute, since it only takes in tri, quad, and isoline?

[Edited by - 16bit_port on December 14, 2010 5:09:09 PM]

Share this post


Link to post
Share on other sites
Right, AMD had their own tessellation solution specific to their hardware and it was available in dx9 and dx10 using a special AMD API in conjunction with DirectX.

DX11 redesigns this with a different approach which is now supported by all new hardware.

The domain attribute specifies what the tessellated patch is going to be. You can have a line, a triangular patch, or a quad patch as you know, but control points are not the same as vertices. The patche shape is not decided by the number of control points the hull shader expects. There is no requirement that the input control points with a count of 16 could not describe a triangle. The hull shader is programmable which allows you to decide the meaning of the incoming control points. So one input control point could be used to generate a quad for instance, or 32 control points could be used to tessellate a line. The approach is flexible so that it may fit the problem you're trying to solve.

What the domain attribute does is tell the tessellator what shape it is tessellating. The domain attribute also decides how many tessellation factors have to be filled in. So the hull shader will analyze the incoming control points, however many there are, and use the resulting analysis to set the tessellation factor values.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this