Direct GPU Rendering of Curves and Surfaces

Rendering curved lines and surfaces directly without dividing them into large numbers of straight line segments or polygons. Algorithms are optimized to run on GPUs.

GPU Vector Art Rendering

Vector art is represented by collections of strokes and paths containing quadratic and cubic Bézier curves. Unlike conventional bitmaps, vector representations are resolution-independent and can be transformed arbitrarily without pixilation artifacts.

We have a developed a technique for rendering Bézier curves directly in terms of their mathematical equations using the Graphics Processing Unit. The idea is to render the triangles of each Bézier convex hull and apply a special pixel shader program to determine if a pixel is inside or outside a bounding curve. We then shade the pixel accordingly, including anti-aliasing if a pixel is near a boundary. Our approach is highly efficient allowing real-time translation, scaling, rotation, or arbitrary perspective transformation. These curves can also be animated in real-time with very little CPU intervention.


Rendering TrueType Fonts. We begin with a TrueType Font outline (left) consisting of a series of ordered control points. As a preprocess, we triangulate the control points preserving triangles that contain Bézier curves. These triangles are sent to the GPU and rendered using a special pixel shader program determines if a pixel is inside or outside the boundary. See [vector].

Applying an Arbitrary Projective Transform to our representation can be done in real-time without the sampling artifacts that would be apparent in a texture or bitmap representation.


Texture Mapping effects can be created by embedding the vector geometry in the tessellation of surface. This approach preserves the resolution-independent properties of our representation.


GPU Rendering of Piecewise Algebraic Surfaces

An Algebraic Surfaces is the solution to a polynomial equation f(x,y,z)=0. By restricting such an equation to the volume within a bounding tetrahedra we get Bézier tetrahedra, a volumetric analog of Bézier curves and surfaces. We can put collections of these primitives together and obtain smooth piecewise objects. We render these surfaces directly in terms of their mathematical representations on the GPU by rendering the triangular faces of each tetrahedra and applying a special purpose pixel shader. At each pixel, our shader determines the pixel ray/surface intersection (if one exists), calculates the surface normal, and evaluates the lighting. This process is highly efficient and can achieve real-time frame rates without the faceting artifacts that appear in conventional polygonal object rendering.

Basic Curved Primitives can be represented as collections of Bézier tetrahedra and rendered directly on the GPU using our approach. See [tetra].

Dynamic Topological Change is easily achieved by varying the underlying algebraic equations over time. Such effects are incredibly difficult to achieve with traditional mesh based modeling.