/[gzz]/manuscripts/AGPU/fonts.txt
ViewVC logotype

Diff of /manuscripts/AGPU/fonts.txt

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.7 by tjl, Sat Apr 12 11:03:21 2003 UTC revision 1.8 by tjl, Sat Apr 12 11:33:46 2003 UTC
# Line 5  ISSUES: Line 5  ISSUES:
5  Legible text using the flexibility of modern GPUs  Legible text using the flexibility of modern GPUs
6  =================================================  =================================================
7    
 Although it has recently become a commodity, 3D hardware has found  
 little use in business applications.  Rotated and smoothly scaled text  
 can enable new types of user interfaces.  However, mipmapping  
 artifacts reduce readability: trilinear filtering blurs the font edges  
 of rendered text.  
   
8  We present two approaches for using the GPU to enhance the appearance  We present two approaches for using the GPU to enhance the appearance
9  of mipmapped text: sharpening and subpixel rendering on LCDs.  We also  of mipmapped text: sharpening and subpixel rendering on LCDs.  We also
10  present a method for efficiently rendering text strings stored in a  present a method for efficiently rendering text strings stored in a
11  texture (with each texel coding one character).  texture (with each texel coding one character).
12    
13  Text sharpening works by applying a linear sharpening filter to the  Although most of these methods are well-known, we believe that their
14  image using multiple texture accesses. Unfortunately, the sharpening  real-time GPU implementation is novel and has several interesting aspects.
15  increases aliasing artifacts with motion, which needs to be dealt  
16  with. One approach is fading off the sharpening as movement starts.  1. Sharpening text
17  The sharpening can be implemented with a fragment program or with  ------------------
18  register combiners and LOD-biasing.  
19    In our research on flexible hypertextual user interfaces, we often
20    want to use rotated, scaled, sheared or curving text.  Because normal
21    windowing systems (such as X) do not provide for this, we have turned to
22    OpenGL. However, as is well known to the graphics community, trilinear
23    filtering does Horrible Things to text (but bilinear / nearest filtering
24    are even worse): the text, especially at small font sizes, is often too
25    blurred to read comfortably.
26    
27    The first approach for sharpening text is to apply a linear sharpening
28    filter in image space through performing multiple texture accesses.
29    Unfortunately, the sharpening increases aliasing artifacts with motion,
30    which needs to be dealt with. One approach is fading off the sharpening
31    as movement starts, in a kind of a "motion blur" effect.  The sharpening
32    can be implemented optimally with a fragment program, and, with less
33    quality, with a combination of register combiners and LOD-biasing.
34    
35    2. Subpixel rendering
36    ---------------------
37    
38    One approach to enhancing text legibility on LCD displays that
39    has been gaining popularity in the recent years is subpixel rendering.
40  Subpixel rendering uses the known ordering of the RGB sub-pixels of  Subpixel rendering uses the known ordering of the RGB sub-pixels of
41  LCD displays for tripling the effective horizontal resolution of  LCD displays for tripling the effective horizontal resolution of
42  rendered black-and-white text. A fragment program can be used to  rendered black-and-white text.
43  implement the sub-pixel filtering.  It could also be possible to  
44  obtain an approximation of the sub-pixel filtering on NV2X with three  We show how a fragment program can be used to implement the sub-pixel
45  texture units, register combiners, and a vertex program for computing  filtering by using the DDX, DDY and TXD instructions to access the
46  the sub-pixel-shifted texture coordinates, which would provide an  texture several times, for the ctriangular sampling filter commonly
47  opportunity for discussing homogeneous coordinate transformations.  used in subpixel rendering.
48    
49    A lesser-quality approximation can be obtained on NV2X with three
50    texture units, register combiners, and a vertex program for computing the
51    sub-pixel-shifted texture coordinates, which would provide an opportunity
52    for discussing the inverting of the homogeneous coordinate transformations
53    in the vertex programs to shift the texture coordinates in screen space.
54    
55    [ there are also some practical aspects related to rendering of mosaiced
56    fonts such as borders &c which we *can* discuss here if you feel like it
57    ]
58    
59    3. Fragment-based text
60    ----------------------
61  The rendering of text strings from texture uses offset texturing: each  The rendering of text strings from texture uses offset texturing: each
62  texel in the text texture stores the offset to the correct glyph in a  texel in the text texture stores the offset to the correct glyph in a
63  font texture. The rendering time depends only on the rendered size of  font texture. The rendering time depends only on the rendered size of
64  the text fragment and not on the number of individual characters.  the text fragment and not on the number of individual characters.
65    
 Although these methods are well-known, we believe that their  
 real-time GPU implementation is novel.  
   
66    
67  FIGS!!!  FIGS!!!
68  - sharpening  - sharpening

Legend:
Removed from v.1.7  
changed lines
  Added in v.1.8

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26