An abstract class for writing tessellation patterns. You can subclass it and implement its virtual methods to specify a custom tessellation behavior. Original mesh edges and triangles are referred to as edge patches and triangle patches. The edge patch handles all the vertices we are adding along the edge. The triangle patch handles all the vertices we are adding inside of the patch (excluding the edges) and the new triangles we are splitting the patch into.