Random-access rendering of general vector graphics
ACM Trans. Graphics (SIGGRAPH Asia), 27(5), 2008.
GPU rendering of vector art over surfaces using cell-specialized descriptions.
Abstract:
We introduce a novel representation for random-access rendering of antialiased vector graphics on the GPU,
along with efficient encoding and rendering algorithms. The representation supports a broad class of
vector primitives, including multiple layers of semitransparent filled and stroked shapes, with quadratic
outlines and color gradients. Our approach is to create a coarse lattice in which each cell contains a
variable-length encoding of the graphics primitives it overlaps. These cell-specialized encodings are
interpreted at runtime within a pixel shader. Advantages include localized memory access and the ability
to map vector graphics onto arbitrary surfaces, or under arbitrary deformations. Most importantly, we
perform both prefiltering and supersampling within a single pixel shader invocation, achieving
inter-primitive antialiasing at no added memory bandwidth cost. We present an efficient encoding
algorithm, and demonstrate high-quality real-time rendering of complex, real-world examples.
Hindsights:
One natural next step is to perform real-time conversion from the vector graphics primitives to the
cell-specialized representation. This might be feasible with the increasing parallelism of the CPU. Also,
it would be great to revisit the antialiasing at shape corners and for thin shapes, to further improve
prefiltering for small primitives like fonts.
Our earlier version of this paper,
Texel programs for random-access
antialiased vector graphics (MSR-TR-2007-95),
also describes how a perfect hash data structure can be adapted as an alternative to
the 2D indirection table.