On Sun, Dec 27, 2020, 20:41 Anuj Verma <an...@iitbhilai.ac.in> wrote:

> Hello Alexei,
>
> *> [...] I went searching for *practical* examples on the internet and*
> *> found very few.*
>
> There are quite a few examples on youtube, and most of them use 8-bit
> buffers to represent SDF.
>
>
>
>
> *> This blog post>
> https://blog.mapbox.com/drawing-text-with-signed-distance-fields-in-mapbox-gl-b0933af6f817
> <https://blog.mapbox.com/drawing-text-with-signed-distance-fields-in-mapbox-gl-b0933af6f817>
> > and some others refer to OpenGL textures as the next step, Their > format
> is unclear to me but it seems that we should align.*
>
> I don't think we have to align the format with OpenGL. We can convert
> the SDF data to any format in OpenGL, so I don't think we need to align.
> In the blog you mentioned the OpenGL texture format is probably GRAY8.
>
> *> The blog post that I mentioned is okay with GRAY8 unevenly split at
> 192,*
>
> *> which brings the question of units too. The units or scale of SDF do
> not > seem to be important. *
>
> For most cases negative values are simply ignored, therefore uneven
> splitting
> is okay. But, that might not be the case in every scenario. The units are
> not
> important, as long we can create acceptable interpolation to render text.
>
> * > Finally, I am not sure if you realize that FreeType gray coverage*
>
> *> [...] I wonder if we really need 16 bits for acceptable >
> interpolation. Probably not.*
>
> I do know about the FreeType's antialiased rendering, the 'bsdf' renderer
> takes advantage of the coverage values to generate SDF.
>
> As for the number of bits, even behdad told me that 8 bits is enough to
> produce respectable rendering:
> https://lists.nongnu.org/archive/html/freetype-devel/2020-06/msg00118.html
> And even some other SDF generators use 8 bits to represent the final SDF
> output data :
>  - https://github.com/libgdx/libgdx/wiki/Distance-field-fonts
>  - https://github.com/rougier/freetype-gl/blob/master/distance-field.c
> I did test 8 bit SDF today, and the final rendering output is
> similar to 16 bit. For my testing I used 3.5 fixed point representation,
> similar to what is used in skia. (
> https://lists.nongnu.org/archive/html/freetype-devel/2020-06/msg00009.html
> )
>
> Finally, we can definitely use 8 bit output to represent SDF and render
> acceptable text using it. Now, we can either eliminate the current 16 bit
> output, or, we can keep both 16 and 8 bit output. What do you think will be
> the better option ? I think we should keep a single output (probably 8 bit)
> and later add an option to directly output floating point data (if we
> decide
> to add floating point calculations to FreeType)
>
> Anuj
>

Isn't the renderer implementing a multi-channel SDF scheme? I thought I saw
multi-channel mentioned in a commit message.

I stumbled upon multi-channel at  https://github.com/Chlumsky/msdfgen where
the readme seems to imply simple 8-bit single-channel SDFs aren't
satisfactory.

>

Reply via email to