Text Rendering, Motion Blur, and Coronavirus

March 16, 2020

Hi everyone!

Text Rendering

The last few weeks, I have spent most of my time working on adding text rendering support to the VGC graphics engine. It's not ready yet, and it should still take a few more weeks of work.

This will eventually be used to render text part of the user interface (e.g., menus, button labels, text edits, Python console, etc.), and also be used to render text on your illustrations/animations, once a text tool will be added (although this won't be implemented before at least one year).

For those who might be familiar with these libraries (or at least with their names), the plan is to use FreeType for reading font files and getting the vector outlines of each glyph, and use HarfBuzz for "shaping", which means, given an input text, determine which glyph should be rendered, and at what size/position. These same two libraries are used either directly or indirectly by a significant portion of the apps you already use, e.g., Google Chrome, Android, any Qt or GTK app, or any app rendering via Cairo (such as Inkscape), or Skia.

Rendering the glyph itself should be done using either custom code triangulating the glyph and rendering the triangle mesh like any other VGC edge/face, or using FreeType to convert the glyph to a raster/bitmap image, and uploading it as a texture on the GPU. The triangulation approach is typically more useful for text in your own illustrations, since you may want to be able to zoom/rotate, etc., so it should be resolution-independent. The texture approach is usually a better fit for UI text (and websites), since most glyphs are very small and the same glyph is rendered hundreds of time, therefore reusing a pre-rendered fixed-resolution glyph brings performance improvements.

Motion Blur

While working on some promotional content for VGC, I started to make another example animation in VPaint which I could use to demonstrate the capabilities of the technology.

I decided to make a bird (again!), because animations of flying birds don't have sudden stops like you would have on foot-ground contacts with a walking character. VPaint doesn't currently have tools to properly handle such sudden stops (the interpolation is always "smooth"). I haven't finished yet: the bird only has one wing for now ;-)

Anyway, one advantage of the VGC technology is that since the software knows the continuous temporal connections between your drawings, it makes it possible to simulate motion blur. So I hacked some code together in a day to see what kind of results I could get with a very simple implementation: it simply renders 128 subframes between each frames, and blend them together linearly. The results so far seem quite promising! (see image on top of this post)

I'm not quite sure if such motion blur would be well-received by animators and audience alike, since it differs quite significantly from cartoon styles we are used too, but it might definitely be one useful tool in the toolset. I may think about polishing the UI for this and releasing it as VPaint 1.8, but I don't promise anything and I don't have any timeline for this.


As you are well aware, the world is in a middle of a serious health crisis, with currently Italy and Iran suffering the most terrible losses, and Spain, France, the United States, and many other European (and non-European) countries starting to enter almost inevitable similar trajectories, by having failed to implement effective social distancing measures in time.

In this time of crisis, my technical skills are better spent spreading awareness about social distancing, rather than a drawing app. Every day counts. Therefore, I am pausing VGC a little bit, at least for the next few days, while I develop data visualization tools for people to understand how serious the threat is, and how important it is to respect social distancing in any country where coronavirus already killed at least 5 people.

You can follow progress on my personal Twitter, if you wish:


If you also live in one of the infected countries, please stay at home and avoid all/most social contacts. We'll get through this.

Thanks again for your unconditional support,


Stay tuned

Found this news interesting? We can send the next ones straight to your inbox (around twice a month). Or we can simply let you know when VGC 1.0 is released. No spam guaranteed. You can unsubscribe at any time.