I am looking for resources on what are the steps of manually implementing tessellation (I happen to be using Unity CG, but any help is appreciated).

Today it seems that it is all the rage to hide most of the gpu code far away and use rather rigid simplifications such as unity's SURFace shaders. And it seems useless unless you're doing supeficial stuff.

A little background: I have procedurally generated meshes (using marching cubes) which have quality normals but no UVs and no Tangents. I have successfully written a custom vertex and fragment shader to do triplanar texture and bumpmap projection as well as some custom stuff (custom lighting, procedurally warping the texture for variation etc).

I am using the GPU Gems book as reference. Now I need to implement tessellation, but It seems I must calculate the tangents at runtime by swizzling normals (ctrl+f this in gems: <normal.z, normal.y, -normal.x>) before the tessellator gets them (during some sort of per-triangle geometry pass, which comes before vert and frag).

And I also need to keep my custom vert+frag setup (with my custom parameters/textures being passed between them) - so apparently I cannot use surface shaders.

Can anyone provide some guidence?

  • \$\begingroup\$ That book is 7 years old...you might want to check out some newer reference material \$\endgroup\$ Commented Jun 5, 2014 at 15:54
  • 1
    \$\begingroup\$ Well I AM asking for reference material; I want to learn. Would be nice if you were more specific rather than just saying "get newer". \$\endgroup\$ Commented Jun 8, 2014 at 12:55

1 Answer 1


The Direct3D 11 Tessellation stage is designed to be a bit generic so that applications can implement different approaches.

There have been a number of presentations on this topic over the years at various conferences. I have links to them at this blog post.

This topic is covered in a number of Direct3D 11 books. See this blog post for a list of recommendations.

The legacy DirectX SDK's Direct3D 11 Win32 desktop samples are available here and here.

  • \$\begingroup\$ Wow, thanks Chuck! I'll start digging through these asap. \$\endgroup\$ Commented Jul 16, 2014 at 16:09

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .