Presentation slides: http://terathon.com/i3d2018_lengyel.pdf
I don't think distance fields are the correct approach either, though the work that Adam Simmons is doing to analytically solve beziers on the GPU is interesting: https://twitter.com/adamjsimmons/status/730911372532322304
If you're interested in the details of the GPU-based implementation, I pre-sort the path data into bins on CPU, encode it to a dynamic texture, traverse the structure in shader using a modified BVH, and calculate the exact distance to individual Beziers using root finding, which I open-sourced here [2]. It's very fast and avoids overdraw through the use of a low-res stencil mask also encoded into texture. There's of course a lot more nuance than that (fill calculation, level-of-detail, etc.) but that's for a long blog post.
- [1] https://ultralig.ht
http://blag.fingswotidun.com/2016/05/evolved-images-using-sh...
Are you sure about that? I’ve looked at their demo with renderdoc. They’re rendering a small polygon for each character, i.e. they’re rejecting invisible characters, or parts of characters, early before PS. And because they cut corners of each character the overdraw is minimized as well. Symmetric band optimization further reduces time spend computing the PS.
high-DPI has never impressed me beyond some point. I use a 55 inch 4K TV as my monitor today. I find the huge desktop space far more valuable than having little tiny pixels. So even though it's 4K, the text is rendered at a similar DPI as a 24" 1080 monitor. Besides, what's good at low DPI should only be better at high DPI right?
- If glyph sizes are known ahead-of-time. Then use character atlas, generated either with CPU things or GPU things. This can be optimized for power consumption.
- Glyph sizes are not known, or text is animated (rotation, etc). In this case Distance Fields are a good trade-off, as their shader is fairly trivial, hence battery consumption should be quite good. On another hand runtime vectorization is viable only if you have a good GPU and connected to the power outlet.