Michael Culleton has built Painterly Splat, a browser viewer that renders real gaussian splat scans as view dependent p5.brush strokes.
Culleton, a creative technologist who lists R&D work for HBO, published the demo on September 30 and pushed the latest of its 17 commits on October 21. The viewer has four modes, Splats, Hybrid, Brush and Lines, and p5.brush generates 144 seeded marks across 18 brush families, the 11 tools in p5.brush 2.2.3 plus watercolor, wet wash, dry brush, flat marker, hatching, bristle and scumble. A GPU matcher assigns a family to each Gaussian from its projected shape, width, opacity and luminance, and the marks keep the native Gaussian elongation and size hierarchy.
The line art pass runs Canny edge detection on the unpainted splats, traces connected paths that stop at depth discontinuities, and unprojects them into world space as tapered brush strips. Culleton describes the result as view dependent linework from approximate splat center depth, not a reconstructed surface mesh. Separate opacity controls for the Gaussians, brush marks and line art make each render mode behave like a layer stack.
Painterly focus falloff uses a world space 3D cursor as its focal plane. Marks on that plane keep their set stroke size, while a thin lens circle of confusion curve enlarges them through the background and more steeply toward the camera. Five lens presets span 35mm to 135mm, including a bright 58mm dream look, and sparse bright background splats resolve into bokeh discs. The README credits the KIRI Engine Gaussian splatting plugin as the reference for the depth of field interaction. The October 21 commit added exposure, contrast, saturation and warmth controls with five starting looks that leave the source splat unchanged.
Rendering and depth sorting run on GaussianSplats3D 0.4.7, the three.js renderer Mark Kellogg released in late 2023 and three.js r170. Bundled scenes are Table (the Mip-NeRF 360 Bonsai scene), Bike (Mip-NeRF 360 Bicycle) and Train from Tanks and Temples. Painterly Splat opens ply, splat and ksplat files up to 1.5 GB on capable desktops, and the files are never uploaded. Compressed PlayCanvas PLYs are not supported.
Painterly Splat also reads camera metadata from Apple SHARP single photo splats, and an optional camera mode sends a photo for generation to an outbound only worker on the host PC through a private Cloudflare queue. The backend reports whether generation is available. A local copy runs from a static web server in any WebGL2 browser.
Painterly Splat is available now on GitHub, alongside a live demo.



