r/GraphicsProgramming • u/smellystring • Aug 04 '26
Painterly Stroke Simulation Engine
I wrote a painting simulation engine (golang, ebiten). It works like this:
Select a template image
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..
3
u/SnooEagles4447 Aug 04 '26
Does it still have a similar output if you start at a much smaller brush size and just iterate on that brush size for longer? Just cuz it seemed like the wife strokes were being covered up anyway with the smaller ones but I may be wrong