How a brush engine uses pen data


The tablet sends "tablet reports" to the computer at somewhere around 200 reports per second. Each report contains information like pen position, pressure, tilt, button info, etc. More here: tablet reports. A brush engine's responsibility is to take that information and use it to draw a stroke in a drawing application.

Brush engines

In a creative applications that draws strokes - applications such as clip studio paint, krita, or photoshop, there is a component (or set of components) we can refer to as the brush engine

Among its responsibilities is to take this pen data and combine it to draw a stroke.

Brush engines vs brushes

Your drawing apps typically feature different brushes: pen, pencil, watercolor, etc. You could think of separate brush engines for each kind of brush. In reality a single brush engine may handle multiple kinds of brushes.

Applying pen data to the brush

But what all these brush engines have in common is that they transform the pen data in various ways to affect how the brush works.

Typically these are the ways in which a brush engine can control the stroke

  • stroke opacity

  • brush size

  • brush rotation

And there are lot of other settings

Here is an example from Clip Studio Paint 2.0 for its Calligraphy brush

Here is an example from Krita


If you are in a creative application that draws strokes,

The most common mapping of pen input to stroke is how pressure is handled. Typically, pressure is either:

  • pressure -> ignored - it has no effect on the brush. this is common for very simple brushes

  • pressure -> brush size - more pressure gives a bigger brush

  • pressure -> brush opacity - more pressure gives a more opaque brush


Tilt typically is treated like this:

  • tilt -> Ignored

  • tilt -> brush size - for example a pencil brushes may get wider as the pen is tilted to simulate how a real pencil makes wider marks on paper as it is tilted.

  • tilt -> brush rotation - enabling the tilt to orient the brush shape

Last updated