surfaces tessellation on the GPU. Our first proposal
consists of the utilization of a parametric map of vir-
tual vertices (Guthe et al., 2005) with an efficient
exploitation of the information stored on the GPU.
Specifically, we propose an adaptive technique that
permits the optimization of the memory usage of the
GPU to increase the data locality exploitation. This
strategy allows the minimization of draw calls and
the CPU-GPU communications.The second proposal
is based on the utilization of the geometry shader for
the generation of geometry in the GPU. This tech-
nique avoids the precomputation and storage of pre-
defined grids in the local memory as the tessellation
can be executed on-the-fly. Both proposals have been
tested under different GPU platforms. Good results in
terms of quality and timing requirements have been
obtained for both. As result of our analysis we con-
clude that the adequate exploitation of the GPU capa-
bilities is close to permit real time rendering of para-
metric models even for very complex scenes.
This paper is organized as follows:
In Section 2 a brief revision of tessellation options
on current GPUs are summarized. Then, in Section
3 our first proposal based on the efficient storage and
exploitation of the information with the vertex shader
is presented. In Section 4 the second proposal based
on the utilization of geometry shader is developed. In
Section 5 the proposals are evaluated and finally, in
Section 6 the main conclusions are highlighted.
2 TESSELLATION OPTIONS IN
CURRENT GRAPHICS CARDS
In this section, we briefly summarize the structure
of current GPUs and the available hardware options
for tessellation. The structure of the GPU accord-
ing to Direct3D10 (Blythe, 2006) consists of fixed-
function stages (Input Assembler, Rasterizer and Out-
put Merger) and three programmable stages (Vertex
Shader, Geometry Shader and Pixel Shader) whose
behavior is defined by a code. With the tessellation
procedure in mind, we will focus our analysis on the
programmable stages and the possibilities to imple-
ment a tessellation procedure on them.
The programmable vertex and pixel shaders can
not be employed for generating/destroying geometry
in a direct way and have no access to the information
associated with another neighboring primitives.
The geometry shader works with primitives
(point, line segment, or triangle) and the output num-
ber of primitives can be higher or lower than the input
number. Adjacent information is available so that for
each triangle the information of the three neighbor tri-
angles can be accessed. However, the main drawback
is the limitation of the number of output primitives
per invocation, as currently only 1024 32-bit values
can be output. The intermediate results processed by
the vertex shader or the geometry shader can be sent
either back to the pipeline through stream out, allow-
ing iterative processing, or can be sent directly to the
rasterization stage.
Recently, the introduction with DirectX 11 (Ni
and Casta
˜
no, 2009) a new tessellator unit permits the
tessellation on the GPU. However, this unit performs
a fixed and regular pattern.
But today the geometry shader is the only option
for the direct implementation of a free tessellation al-
gorithm.
Taking into account these options, our proposals
exploit two different alternatives for the tessellation.
The first one is based on the exploitation of the ver-
tex shader (VST, Vertex Shader Tessellation). In this
case, and due to the impossibility to generate geome-
try, the utilization of techniques based on virtual ver-
tices (Boubekeur and Schlick, 2005) is the key for
a multiresolution application. The second proposal
is based on the exploitation of the geometry shader
(GST, Geometry Shader Tessellation). In this case,
the tessellation of surface is performed in the geom-
etry shader. The resolution level can be selected on-
the-fly and the generated geometry can be fed back to
the standard pipeline through the stream out unit. In
next sections we describe in detail both proposals.
3 VERTEX SHADER
TESSELLATION (VST)
In this section we describe our proposal for the B
´
ezier
surfaces tessellation using the vertex shader. Our
method is based on the storage and efficient exploita-
tion of the information in the GPU. Specifically, our
proposal uses a regular grid of parametric coordi-
nates as the basis for the computation. The efficient
scheduling employed permits the efficient exploita-
tion of the information stored in the GPU reducing the
transmission requirements between CPU and GPU.
The representation of a B
´
ezier surface
Q(u,v), 0 ≤ u,v ≤ 1 is based on the utilization
of two parametric values defined in a normalized
interval [0, 1]. In our proposal the tessellation is per-
formed on the GPU and this implies the evaluation of
the surface equation Q(u,v) for different parametric
values (u, v). The resulting points are vertices that are
connected to build the triangles of the final mesh. For
reasons of clarity we work with a simple algorithm
that performs a uniform subdivision of the parametric
SYNTHESIS OF BE´ ZIER SURFACES ON THE GPU
111