Improved Alpha-Tested Magnification for Vector Textures and Special Effects
Chris Green∗
Valve(a) 64x64 texture, alpha-blended(b) 64x64 texture, alpha tested(c) 64x64 texture using our techniqueFigure 1: Vector art encoded in a 64x64 texture using (a) simple bilinear filtering (b) alpha testing and (c) our distance field technique

Abstract
A simple and efficient method is presented which allows improved
rendering of glyphs composed of curved and linear elements. A
distance field is generated from a high resolution image, and thenstored into a channel of a lower-resolution texture. In the simplest
case, this texture can then be rendered simply by using the alphatesting and alpha-thresholding feature of modern GPUs, without acustom shader. This allows the technique to be used on even thelowest-end 3D graphics hardware.
With the use of programmable shading, the technique is extended
to perform various special effect renderings, including soft edges,
outlining, drop shadows, multi-colored images, and sharp corners.

1

Introduction

3D renderings and also user-interface elements. Our technique iscapable of generating high quality vector art renderings as shownin Figure 1c.

2Related work

Many techniques have been developed to accurately render vector graphics using texture-mapping graphics hardware. In [Frisken
et al. 2000], distance fields were used to represent both 2dimensional glyphs and 3-dimensional solid geometry. Quadtrees
and octrees were used to adaptively control the resolution of the
distance field based upon local variations. While GPU renderingof such objects was not discussed, recent advances in the generality of GPU programming models would allow this method to be
implemented using DirectX10 [Blythe 2006].

For high quality real-time 3D rendering, it is critical that the limited
amount of memory available for the storage of texture maps be usedefficiently. In interactive applications such as computer games, theuser is often able to view texture mapped objects at a high levelof magnification, requiring that texture maps be stored at a highresolution so as to not become unpleasantly blurry, as shown in
Figure 1a, when viewed from such perspectives.

In [Sen 2004] and [Tumblin and Choudhury 2004], texture maps
are augmented with additional data to control interpolation between
texel samples so as to add sharp edges in a controllable fashion.
Both line-art images and photographic textures containing hardedges were rendered directly on the GPU using their representation.

When the texture maps are used to represent “line-art” images, suchas text, signs and UI elements, this can require the use of very highresolution texture maps in order to look acceptable, particularly athigh resolutions.

In [Loop and Blinn 2005], implicit cubic curves were used to model
the boundaries of glyphs, with the GPU used to render vector textures with smooth resolution-independent curves.

In addition to text and UI elements, this problem is also common
in alpha-tested image-based impostors for complicated objects suchas foliage. When textures with alpha channels derived from coverage are magnified with hardware bilinear filtering, unpleasant “wiggles” as seen in Figure 1b appear because the coverage function is
not linear.
In this chapter, we present a simple method to generate and render alpha-tested texture maps in order to minimize the artifacts thatarise when such textures are heavily magnified. We will demonstrate several usage scenarios in a computer game context, both for∗ e-mail: cgreen@valvesoftware.com

In [Qin et al. 2006], a distance based representation is used, witha precomputed set of “features” influencing each Voronoi region.
Given these features, a pixel shader is used to analytically compute
exact distance values.
Alpha-testing, in which the alpha value output from the pixel shaderis thresholded so as to yield a binary on/off result, is widely usedin games to provide sharp edges in reconstructed textures. Unfortunately, because the images that are generally used as sources for thiscontain “coverage” information which is not properly reconstructedat the subtexel level by bilinear interpolation, unpleasant artifacts
are usually seen for non-axis-aligned edges when these textures are
magnified.

4

3

RENDERING

Representation and Generation

In order to overcome the artifacts of simple alpha testing while
keeping storage increase to a minimum, we sought a method for
displaying vector textures that could• work on all levels of graphics hardware, including systems
lacking programmable shading• run as fast as, or nearly as fast as, standard texture mapping• take advantage of the bilinear interpolation present in all modern GPUs
• function inside of a pre-existing complex shader system [Mitchell et al. 2006] with few changes• add at most a few instructions to the pixel shader so that vector
textures can be used in existing shaders without overflowing
instruction limits• not require that input images be provided in a vector form.
• use existing low-precision 8-bit texture formats• be used as a direct replacement for alpha-tested impostor images
We chose to implement a simple uniformly-sampled signeddistance field representation, with the distance function stored in
an 8-bit channel. By doing so, we are able to take advantage ofthe native bilinear texture interpolation which is present in all modern GPUs in order to accurately reconstruct the distance between
a sub-texel and a piecewise-linear approximation of the true highresolution image. While this representation is limited in terms ofthe topology of features which can be represented compared toother approaches, we felt that its high performance, simplicity, andease of integration with our existing rendering system made it theright choice for Valve’s Source engine.

(a) High resolution input(b) 64x64 Distance field

Figure 2: (a) A high resolution (4096x4096) binary input is used
to compute (b) a low resolution (64x64) distance field

4

Rendering

In the simplest case, the resulting distance field textures can be usedas-is in any context where geometry is being rendered with alphatesting. Under magnification, this will produce an image with highresolution (albeit, aliased) linear edges, free of the false curved contours (see Figure 1b) common with alpha-tested textures generated
by storing and filtering coverage rather than a distance field. Witha distance field representation, we merely have to set the alpha test
threshold to 0.5. Since it is fairly common to use alpha testingrather than alpha blending for certain classes of primitives in order to avoid the costly sorting step, this technique can provide an
immediate visual improvement with no performance penalty.

While it is possible to generate the appropriate distance data from
vector-based representations of the underlying art, we choose instead to generate the low-resolution distance fields from high resolution source images. In a typical case, a 4096x4096 image will be
used to generate a distance field texture with a resolution as low as
64x64, as shown in Figure 2.
At texture-generation time, the generator takes as its input a highresolution binary texture where each texel is classified as either “in”
or “out.” The user specifies a target resolution, and also a “spreadfactor,” which controls the range which is used to map the signed
distance into the range of 0 to 1 for storage in an 8-bit texture channel. The spread factor also controls the domain of effect for suchspecial rendering attributes as drop-shadows and outlines, which
will be discussed in section 4.2.
For each output texel, the distance field generator determines
whether the corresponding pixel in the high resolution image is “in”
or “out.” Additionally, the generator computes 2D distance (in texels) to the nearest texel of the opposite state. This is done by examining the local neighborhood around a given texel. While there
are more efficient and complex algorithms to compute the signed
distance field than our simple “brute-force” search, because of thelimited distance range which may be stored in an 8-bit alpha channel, only a small neighborhood must be searched. The execution
time for this simple brute-force method is negligible.
Once this signed distance has been calculated, we map it into therange 0..1, with 0 representing the maximum possible negative distance and 1.0 representing the maximum possible positive distance.
A texel value of 0.5 represents the exact position of the edge and,hence, 0.5 is generally used for the alpha threshold value.

Figure 3: 128x128 “No trespassing” distance image applied to asurface in Team Fortress 2
In Figure 3, we demonstrate a 128x128 distance field representationof a “No Trespassing” sign rendered as a decal over the surface ofa wall in the game Team Fortress 2. The apparent resolution of thisdecal is incredibly high in world space and holds up well under any
level of magnification that it will ever undergo in the game. We
will refer to this particular decal example in the next section as we
discuss other enhancements available to us when representing ourvector art in this manner.

4.1

Antialiasing

If alpha-blending is practical for a given application, the same distance field representation can be used to generate higher quality

c 2007 Valve Corporation. All Rights Reserved

4.3

Sharp corners

4

RENDERING

Figure 4: Zoom of 256x256 “No Trespassing” sign with hard (left) and softened edges (right)

renderings than mere alpha testing, at the expense of requiring custom fragment shaders.
Figure 4 demonstrates a simple way to soften up the harsh aliased
pixel edges. Two distance thresholds, Distmin and Distmax , aredefined and the shader maps the distance field value between thesetwo values using the smoothstep() function. On graphics hardware
which supports per-pixel screen-space derivatives, the derivatives ofthe distance field’s texture coordinates can be used to vary the widthof the soft region in order to properly anti-alias the edges of the vector art [Qin et al. 2006]. When the texture is minified, widening of
the soft region can be used to reduce aliasing artifacts. Additionally, when rendering alpha-tested foliage, the alpha threshold canbe increased with distance, so that the foliage gradually disappears
as it becomes farther away to avoid LOD popping.

4.2

Figure 5: Outline added by pixel shader

Enhanced Rendering
4.2.3

In addition to providing crisp high resolution antialiased vector art
using raster hardware, we can apply additional manipulations using
the distance field to achieve other effects such as outlining, glows
and drop shadows. Of course, since all of these operations are functions of the distance field, they can be dynamically controlled withshader parameters.
4.2.1

Outlining

In addition to effects which are simple functions of a single distance, we can use a second lookup into the distance field with atexture coordinate offset to produce drop shadows or other similareffects as shown in Figure 7.
In addition to these simple 2D effects, there are surely other ways
to reinterpret the distance field to give designers even more options.

4.3
By changing the color of all texels which are between two userspecified distance values, a simple texture-space outlining can beapplied by the pixel shader as shown in our decal example in Figure 5. The outline produced will have crisp high quality edges whenmagnified and, of course, the color and width of the outline can bevaried dynamically merely by changing pixel shader constants.
4.2.2

Glows

When the alpha value is between the threshold value of 0.5 and 0,
the smoothstep function can be used to substitute a “halo” whosecolor value comes from a pixel shader constant as shown in Figure 6. The dynamic nature of this effect is particularly powerfulin a game, as designers may want to draw attention to a particularpiece of vector art in the game world based on some game state byanimating the glow parameters (blinking a health meter, emphasizing an exit sign etc).

Drop Shadows

Sharp corners

As you may have noticed in all of the preceding examples, encodingedges using a single signed distance “rounds off” corners as theresolution of the distance field decreases [Qin et al. 2006]. For
example, the hard corners of the letter G in Figure 2a become morerounded off as illustrated in Figures 5, 6 and 7.
Sharp corners can be preserved, however, by using more than
one channel of the texture to represent different edges intersecting within a texel. For instance, with two channels, the intersectionof two edges can be accurately represented by performing a logicalAND in the pixel shader. In Figure 8, we have stored these two edge
distances in the red and green channels of a single texture, resulting
in a well-preserved pointy corner. This same technique could also
be performed on the “No Trespassing” sign if we wished to represent sharper corners on our text. As it stands, we like the roundedstyle of this text and have used a single distance field for this andother decals in Team Fortress 2.

c 2007 Valve Corporation. All Rights Reserved

REFERENCESREFERENCES

Figure 6: Scary flashing “Outer glow” added by pixel shader

Figure 7: Soft drop-shadow added by the pixel shader. The direction, size, opacity, and color of the shadow are dynamically controllable.

5f l o a t d i s t A l p h a M a s k = b a s e C o l o r . a ; i f ( OUTLINE &&( d i s t A l p h a M a s k >= OUTLINE MIN VALUE0 ) &&( d i s t A l p h a M a s k <= OUTLINE MAX VALUE1 ) ){float oFactor =1.0;
i f ( d i s t A l p h a M a s k <= OUTLINE MIN VALUE1 ){o F a c t o r = s m o o t h s t e p ( OUTLINE MIN VALUE0 ,OUTLINE MIN VALUE1 ,distAlphaMask ) ;}else{o F a c t o r = s m o o t h s t e p ( OUTLINE MAX VALUE1 ,OUTLINE MAX VALUE0 ,distAlphaMask ) ;}b a s e C o l o r = l e r p ( b a s e C o l o r , OUTLINE COLOR , o F a c t o r ) ;}i f ( SOFT EDGES ) {b a s e C o l o r . a ∗= s m o o t h s t e p ( SOFT EDGE MIN ,SOFT EDGE MAX ,distAlphaMask ) ;} else {b a s e C o l o r . a = d i s t A l p h a M a s k >= 0 . 5 ;} i f ( OUTER GLOW ) {f l o a t 4 glowTexel =tex2D ( B a s e T e x t u r e S a m p l e r ,i . b a s e T e x C o o r d . xy+GLOW UV OFFSET ) ;f l o a t 4 glowc = OUTER GLOW COLOR ∗ s m o o t h s t e p (OUTER GLOW MIN DVALUE,
OUTER GLOW MAX DVALUE,
glowTexel . a ) ;b a s e C o l o r = l e r p ( glowc , b a s e C o l o r , mskUsed ) ;}Figure 9: HLSL source code for outline, glow/dropshadow, andedge softness.

Conclusion

In this chapter, we have demonstrated an efficient vector texture
system which has been integrated into the Source game engine
which has been previously used to develop games such as the HalfLife 2 series, Counter-Strike: Source and Day of Defeat: Source.
This vector texture technology is used in the upcoming game Team
Fortress 2 with no significant performance degradation relative toconventional texture mapping. We were able to effectively use
vector-encoded images both for textures mapped onto 3D geometry in our first person 3D view and also for 2D screen overlays.
This capability has provided significant visual improvements andsavings of texture memory.

References
B LYTHE , D. 2006. The direct3d 10 system. In SIGGRAPH ’06:
ACM SIGGRAPH 2006 Papers, ACM Press, New York, NY,
USA, 724–734.
F RISKEN , S. F., P ERRY, R. N., ROCKWOOD , A. P., AND J ONES ,T. R. 2000. Adaptively sampled distance fields: a general
representation of shape for computer graphics. In SIGGRAPH’00: Proceedings of the 27th annual conference on Computer graphics and interactive techniques, ACM Press/AddisonWesley Publishing Co., New York, NY, USA, 249–254.

GRAPH ’05: ACM SIGGRAPH 2005 Papers, ACM Press, New
York, NY, USA, 1000–1009.
M ITCHELL , J., M C TAGGART, G., AND G REEN , C. 2006. Shadingin valve’s source engine. In SIGGRAPH ’06: ACM SIGGRAPH
2006 Courses, ACM Press, New York, NY, USA, 129–142.
Q IN , Z., M C C OOL , M. D., AND K APLAN , C. S. 2006. Real-time
texture-mapped vector glyphs. In I3D ’06: Proceedings of the2006 symposium on Interactive 3D graphics and games, ACM
Press, New York, NY, USA, 125–132.
R AY, N., N EIGER , T., C AVIN , X., AND L EVY, B. 2005. Vector
texture maps. In Tech Report.
S EN , P. 2004. Silhouette maps for improved texture magnification. In HWWS ’04: Proceedings of the ACM SIGGRAPH/EUROGRAPHICS conference on Graphics hardware, ACM Press,
New York, NY, USA, 65–73.
T UMBLIN , J., AND C HOUDHURY, P. 2004. Bixels: Picture samples with sharp embedded boundaries. In Rendering Techniques,
255–264.

L OOP, C., AND B LINN , J. 2005. Resolution independent curve
rendering using programmable graphics hardware. In SIG-

c 2007 Valve Corporation. All Rights Reserved

REFERENCESREFERENCES

Figure 8: Corner encoded at 64x64 using one distance field (left) and the AND of two distance fields (right)

c 2007 Valve Corporation. All Rights Reserved