I want to implement a GPU version of Mypaint brush engine. Where should I start with?

I want to implement a GPU (Vulkan) version of mypaint brush engine maybe a few month later. It’s not in a hurry but I think it would be great if I start learning about the the code from early on.

A brush engine on GPU may sounds crazy but it’s possible. Take a look at my research project name as Ciallo. Recently, I finished up a naive version of brush engine on GPU. It need to add more features in the future. I think it would be pretty cool to have a mature brush library inside Ciallo.

As the video shows above, the triangle directs downward is construct by equidistant aligned dots. Those dots can be freely modified. Since it’s rendered on GPU, it wouldn’t be hard to render thousands of strokes within 16ms.

Anyway, I need to replicate libmypaint with GLSL, any guidance would be helpful and appreciated. It seems that most of the document is related to python part of the mypaint. But only the portable C code, “libmypaint” on github is what I need. Is there an “overview document” I could start with, which explains every aspect about libmypaint?

2 Likes

I’m pretty new to the codebase, but as far as I’ve understood GPU acceleration was added years ago. I had trouble when they first added it because my computer was a potato.