Tessellating bicubic Bezier surfaces
In this recipe, we will perform tessellation upon a bicubic Bezier control patch using the tessellation stages of the graphics pipeline. This tessellation will use the quad
domain of the tessellator. We will update the CommonTess.hlsl
shader code to include the methods to perform bicubic interpolation of the Bezier control points using De Casteljau's algorithm to subdivide a Bezier curve at an arbitrary point along the curve.
Getting ready
We will continue on from the earlier recipe, Preparing the vertex shader and buffers for tessellation.
How to do it…
We will first implement the shader code for tessellating our Bezier control points. We will then implement a renderer for a bicubic Bezier surface. Consider the following steps:
First within
CommonTess.hlsl
, we add the hull shader constant data structure to be generated for a Bezier patch:// Max 32 outputs struct HS_BezierPatchConstant { float EdgeTessFactor[4] : SV_TessFactor; float InsideTessFactor...