In this post, we are going to talk about cubic bezier surface simulation.
The Direct3D 11 runtime supports three new stages that implement tessellation, which converts low-detail subdivision surfaces into higher-detail primitives on the GPU. Tessellation tiles (or breaks up) high-order surfaces into suitable structures for rendering.
By implementing tessellation in hardware, a graphics pipeline can evaluate lower detail (lower polygon count) models and render in higher detail. While software tessellation can be done, tessellation implemented by hardware can generate an incredible amount of visual detail (including support for displacement mapping) without adding the visual detail to the model sizes and paralyze refresh rates.
Saves lots of memory and bandwidth, which allows an application to render higher detailed surfaces from low-resolution models. The tessellation technique implemented in the Direct3D 11 pipeline also supports displacement mapping, which can produce stunning amounts of surface detail.
Supports scalable-rendering techniques, such as continuous or view dependent levels-of-detail which can be calculated on the fly.
Improves performance by performing expensive computations at a lower frequency (doing calculations on a lower-detail model). This could include blending calculations using blend shapes or morph targets for realistic animation or physics calculations for collision detection or soft body dynamics.
The Direct3D 11 pipeline implements tessellation in hardware, which off-loads the work from the CPU to the GPU. This can lead to very large performance improvements if an application implements large numbers of morph targets and/or more sophisticated skinning/deformation models. To access the new tessellation features, you must learn about some new pipeline stages.
Bézier surfaces are a species of a mathematical spline used in computer graphics, computer-aided-design, and finite element modeling. As with the Bezier curve, a Bezier surface is defined by a set of control points. Similar to interpolation in many respects, a key difference is that the surface does not, in general, pass through the central control points; rather, it is “stretched” toward them as though each was an attractive force. They are visually intuitive, and for many applications, mathematically convenient.
To compute the y coordinate of each control point I used a function based on sin and cosine of total application time plus x and z coordinates.