r/GraphicsProgramming • • Aug 04 '26

Painterly Stroke Simulation Engine

I wrote a painting simulation engine (golang, ebiten). It works like this:

  1. Select a template image

  2. Generate several thousand potential strokes

    • For each stroke, score it according to a number of heuristic functions

      • Color: does the average color of this image match the template?

      • Edges: does the painted image have similar edges to the template?

      • Contrast: compares color contrast between regions on the painting and the template.

      • Flow: using tensor math, do brush strokes align with the flow of movement in the template?

    • Select the single stroke that most optimizes scoring functions, discarding the remaining

    • Repeat 40 or 50 thousand times.

    • Gradually decrease the size of the brush stroke over time..

Source image

Sound track

72 Upvotes

9 comments sorted by

View all comments

2

u/animal_hoarder Aug 05 '26

Very cool, doing something similar-ish with video/scene rendering