If the tessellation primitive mode is ** Quads**, a rectangle is subdivided
into a collection of triangles covering the area of the original rectangle.
First, the original rectangle is subdivided into a regular mesh of
rectangles, where the number of rectangles along the
$u=0$
and
$u=1$
(vertical) and
$v=0$
and
$v=1$
(horizontal) edges are derived from the first and second inner tessellation
levels, respectively. All rectangles, except those adjacent to one of the
outer rectangle edges, are decomposed into triangle pairs. The outermost
rectangle edges are subdivided independently, using the first, second,
third, and fourth outer tessellation levels to control the number of
subdivisions of the
$u=0$
(left),
$v=0$
(bottom),
$u=1$
(right), and
$v=1$
(top) edges, respectively.
The area between the inner rectangles of the mesh and the outer rectangle
edges are filled by triangles produced by joining the vertices on the
subdivided outer edges to the vertices on the edge of the inner rectangle
mesh.

If both clamped inner tessellation levels and all four clamped outer
tessellation levels are exactly one, only a single triangle pair covering
the outer rectangle is generated. Otherwise, if either clamped inner
tessellation level is one, that tessellation level is treated as though it
were originally specified as
$1+\epsilon$
and will result in a
two- or three-segment subdivision depending on the tessellation spacing.
When used with fractional odd spacing, the three-segment subdivision may
produce *inner vertices* positioned on the edge of the rectangle.

If any tessellation level is greater than one, tessellation begins by
subdividing the
$u=0$
and
$u=1$
edges of the outer
rectangle into
$m$
segments using the clamped and rounded first
inner tessellation level and the tessellation spacing. The
$v=0$
and
$v=1$
edges are subdivided into
$n$
segments
using the second inner tessellation level. Each vertex on the
$u=0$
and
$v=0$
edges are joined with the
corresponding vertex on the
$u=1$
and
$v=1$
edges to
produce a set of vertical and horizontal lines that divide the rectangle
into a grid of smaller rectangles. The primitive generator emits a pair of
non-overlapping triangles covering each such rectangle not adjacent to an
edge of the outer rectangle. The boundary of the region covered by these
triangles forms an inner rectangle, the edges of which are subdivided by the
grid vertices that lie on the edge. If either
$m$
or
$n$
is two, the inner rectangle is degenerate, and one or both
of the rectangle’s *edges* consist of a single point. This subdivision is
illustrated in Figure Inner Quad Tessellation.

After the area corresponding to the inner rectangle is filled, the
tessellator must produce triangles to cover the area between the inner and
outer rectangles. To do this, the subdivision of the outer rectangle edge
above is discarded. Instead, the
$u=0$
,
$v=0$
,
$u=1$
, and
$v=1$
edges are subdivided according to
the first, second, third, and fourth outer tessellation levels,
respectively, and the tessellation spacing. The original subdivision of the
inner rectangle is retained. The area between the outer and inner rectangles
is completely filled by non-overlapping triangles. Two of the three vertices
of each triangle are adjacent vertices on a subdivided edge of one
rectangle; the third is one of the vertices on the corresponding edge of the
other triangle. If either edge of the innermost rectangle is degenerate, the
area near the corresponding outer edges is filled by connecting each vertex
on the outer edge with the single vertex making up the *inner edge*.

The algorithm used to subdivide the rectangular domain in (u,v) space into individual triangles is implementation-dependent. However, the set of triangles produced will completely cover the domain, and no portion of the domain will be covered by multiple triangles. The order in which the generated triangles passed to subsequent pipeline stages and the order of the vertices in those triangles are both implementation-dependent. However, when depicted in a manner similar to Inner Quad Tessellation, the order of the vertices in the generated triangles will be either all clockwise or all counter-clockwise, according to the vertex order layout declaration.