You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
It optimizes 'nearest-edge searching' by using 'classic scanline fill' and encode
the pixel-curve data into a lookup bitmap.
Then it go to original Msdf gen phase,
this time instead of checking all edges for a pixel,
it use the lookup bitmap to decode edge data that are responsible for the
specific bitmap.
With a given pixel, the choices are
no edge for this pixel, => finish here
only 1 edge for this pixel, just calculate distant from a pixel to that edge
more than 1 edge, just calculate the repsonsible edges (mostly just 2-3 edges, on the
corners, esp overlap edges)
Activity
prepare commentedon Mar 13, 2020
Msdf3
Our version is an extension to the original technique (Msdf, see https://github.com/Chlumsky/msdfgen).
It optimizes 'nearest-edge searching' by using 'classic scanline fill' and encode
the pixel-curve data into a lookup bitmap.
Then it go to original Msdf gen phase,
this time instead of checking all edges for a pixel,
it use the lookup bitmap to decode edge data that are responsible for the
specific bitmap.
With a given pixel, the choices are
no edge for this pixel, => finish here
only 1 edge for this pixel, just calculate distant from a pixel to that edge
more than 1 edge, just calculate the repsonsible edges (mostly just 2-3 edges, on the
corners, esp overlap edges)
so it go faster
for Msdf, see https://github.com/PaintLab/PixelFarm/tree/master/src/PixelFarm/PixelFarm.Drawing/7_CpuBlitPainter/Msdf
and Msdf3, see https://github.com/PaintLab/PixelFarm/tree/master/src/PixelFarm/PixelFarm.Drawing/7_CpuBlitPainter/Msdf3
blue rect is original Msdf, and red rect is Msdf3
prepare commentedon Mar 13, 2020
Closest Edge Lookup Table
Closest edge lookup table bitmap, each pixel contains encoding data of responsible edges
over that pixel.
This render with 'classic scanline' technqiue.
I use my PixelFarm's Agg (Antigrain geometry, C# port) the render it.
Roboto font,Closest edge lookup table bitmap
Roboto font, Msdf output, 8 times scale up, still sharp :)
Please note that this version has some artifacts, cause by lut phase, It will be fixed later
prepare commentedon Mar 13, 2020
Another glyph-B, Roboto font
This shows both curve segments and line segment
Closest edge lookup table bitmap
Roboto font, Msdf output, 8 times scale up, still sharp :)
Please note that this version has some artifacts, cause by lut phase, It will be fixed later
prepare commentedon Mar 14, 2020
Closest Edge Lookup Table in the form of Bitmap
The following screen capture show the debugging session when the renderer paint each border.
we paint each border, each border encodes information about edge segment
from the picture, we save result of each step to files to examine later
These are the lut bitmaps.
please note that the actual images are too dark, I will enhance it up to see the data.
1
2
3
4
5
6
7
8
9
10
11
12
prepare commentedon Mar 14, 2020
Lut creation detail
Zoom in some images.
from step1, zoom 8 times from original (above)
You see that it is too dark.
so I will enhance it to see the detail inside in the following pic.
the picture is zoom in 8 times,
and increase brightness (100%) ,
increase contrast (50%) to see the detail
step 1, in detail
prepare commentedon Mar 14, 2020
step 2, in detail
final
[-]Font TextureAtlas Development[/-][+]Msdf3, Font TextureAtlas Development[/+]