hraness

saved

Painting with Gaussians

by Dmitri Sotnikov(iterate think thoughts)published

gist

Dmitri Sotnikov builds a painterly image renderer from 2D Gaussian splats instead of optimizing random marks against a target. Structure tensors orient strokes along color edges, wavelets allocate detail, noise removes mechanical regularity, and layered splats mimic underpainting through fine brushwork. Moving generation to the GPU makes hundreds of thousands of strokes interactive. The project shows how classical image analysis can produce controllable painting effects without a generative model.

ideas

  • Edges provide stroke direction. A color-aware structure tensor points each splat along contours and captures boundaries that grayscale gradients would miss.
  • Wavelets allocate detail. Relative multi-scale energy keeps broad marks in smooth areas and spends smaller strokes on texture, including dark regions.
  • Randomness needs structure. Avalanche-hashed placement removes grid artifacts, while decorrelated noise adds variation without forcing neighboring strokes into the same wave.
  • Layers reproduce a painting process. Opaque underpainting establishes coverage, then translucent and increasingly specific strokes restore form and fine edges.
  • Generate on the GPU. Keeping candidate generation and splat buffers in the graphics pipeline makes large paintings responsive enough for interactive tuning.