freetype-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [ft-devel] Extra data for 3D acceleration


From: Werner LEMBERG
Subject: Re: [ft-devel] Extra data for 3D acceleration
Date: Fri, 18 Dec 2009 22:54:14 +0100 (CET)

> I'm working on code to implement rendering of fonts on a GPU.  In
> reality, the fonts will be rendered on the CPU using FreeType2 and a
> texture representing the shape will be sent to the GPU as in the
> paper at alice.loria.fr/publications/papers/2005/VTM/vtm.pdf.

Interesting.

> To do that I need certain information at each pixel.  Namely:
>
> 1) Where at the top or left side of the pixel, does the first
> discontinuity occur (If there is more than one discontinuity it will
> increase the resolution until there is only one.)

I'm not completely sure how a `discontinuity' is defined (I've only
quickly skimmed the abovementioned article), but I believe that this
information is not available.  The smooth rasterizer only computes
vertical or horizontal spans, that is, it searches for intersections
of the grid with the outlines.  If I interpret the article currectly,
this is not sufficient information for you.

> 2) At that point, what is the angle to the tangent of the
> discontinuity.

Ditto.

> 3) Likewise for the bottom or right side of the pixel.

Ditto.

> My plan is to modify the 'grays' raster to generate this data and
> send it to the 'call-back' function where I will create the
> necessary texture for the GPU.

This shouldn't be too hard, I believe, especially if the subdividing
of the Bézier curves as done in the smooth rasterizer satisfies your
needs.

> My assumptions are that the ftgrays AA rasterer is the best choice
> because it has the most data points.  (Though the texture map I will
> generate stores only black/white; the GPU will calculate the
> gray/opacity level from the above data.)

In case it doesn't suffice you could use FT_Outline_Decompose,
providing proper callbacks to handle the lines and Bézier arcs by
yourself.


    Werner

reply via email to

[Prev in Thread] Current Thread [Next in Thread]