

One down side of the control you have over subdivision of each primitive is that you can break the C0 continuity of a mesh quite easily. If you are not careful to maintain the same factors for primitives on both sides of an edge you will create T-junctions that will very likely cause cracking.
#3d tessellation full#
It is probably a full article in and of itself to talk about crack avoidance.įor this article we’ll just concern ourselves with cracks from bad tessellation factors.īe careful when designing an algorithm to pick tessellation factors along edges. The nature of the system gives full control to the graphics programmer to break their mesh. When using hardware tessellation, cracks and holes are the largest area of bugs. If you use normal or view/clip triangle areas you will probably under tessellate the silhouettes. Clip space is convenient as it handles distance implicitly, but if you require a non-linear falloff, may want view space.ģ. Picking a proper tessellation factor is a matter of taste, but there are some key points to remember:Ģ.
#3d tessellation Patch#
While the Hull Constant Shader actually sets the expansion factors for the patch for best performance, the recommendation is to calculate the expansion factor in the Hull Shader proper and pass down as a control point constant (“opposite edge factor”). Remember that the Hull shader is responsible for deciding how much to tessellate each control primitive. To that end, the most important piece is determining the tessellation factor for each primitive being tessellated.
#3d tessellation how to#
(Image is scaled up to highlight density)Īs mentioned, this article isn’t going to cover the basics of tessellation, but rather talk about how to use dynamic tessellation to implement a smooth LOD system. The triangle density of tessellation is roughly equivalent to no tessellation at all. Click to zoom.įigure 3 : Again, same scene, same session, just moved camera really far away. Tessellation auto adjusts to reduce triangle density. There are other benefits to using tessellation that provide increased performance over statically tessellated sources meshes, but dynamic tessellation provides an increase in visual dynamic visual fidelity not obtainable any other way.įigure 2 : Same scene, same session, just moved the camera back a bit. With dynamic tessellation we can implement a smooth LoD system per primitive which will allows you to more finely control the geometry rendered.Ī smooth LoD system is something that is not possible without a dynamic hardware tessellation solution. This results in increased bandwidth costs to upload new models as well as visual artifacts like popping. Previously, LoDs had to be pre-calculated and swapped out procedurally on the host. You’ve likely seen this type of shot many times before.ĭynamic tessellation allows you to easily control the visual fidelity of the meshes in your scene on a per primitive basis as well as remove obnoxious mesh popping from LoD mesh swaps.The nature of the tessellation hardware allows you to specify a subdivision factor per edge and interior of each primitive dynamically. No displacement map here, just smoothing from PN triangles. Don't worry I'll wait for you.įigure 1 : A close up shot of a tessellated head. It is assumed readers are familiar with the pipeline and usage. The graphics pipeline for hardware tessellation has been explained excellently in many locations and at many topics. However there are a few tricks that are worth discussing such as the best way to determine tessellation factors For the most part this is pretty straightforward to implement (once you learn the API).

#3d tessellation upgrade#
This feature has been used in numerous high profile titles and is a great way to upgrade your visuals without an unreasonable amount of extra content effort.Īrguably the easiest way to leverage GPU-based tessellation is computing dynamic LODs for your geometry on the fly. Direct3D 11 (and the hardware that supports it) includes a lot of new functionality for programmers, but one of the most interesting and powerful additions is Tessellation.
