SplatThis

Photo → SVG / PPTX / HTML via 2D Gaussian splatting. Apple-Silicon native.

Three deploy targets, one splat set

Same chameleon source, 2 000-splat budget. The SVG renders live through the current corrected exporter — back-to-front paint order, exact-sampled gradient stops — and its scores come from the versioned ledgers, regenerated by tools/update_landing.py. The pixel-runtime card is a stored render of the exact ImageData path.

Source photo
Source · input.png · 476×502
Pixel-runtime render
Pixel runtime · stored historical render · LPIPS 0.11
SVG · corrected exporter, high gradients · SSIM 0.8665 · LPIPS 0.1491 · 1.5 MB live vector

Scriptless CSS, rendered live

This is the one output that cannot be shown in a README. GitHub and PyPI both sanitize markup through an allowlist that omits the <style> tag and the style attribute, so a build made entirely of CSS radial gradients arrives there as 1,615 unstyled <div> elements. This page has no sanitizer, so it renders for real below — no script, no canvas, no SVG, no bitmap. View source on the frame.

Source photo
Source · 476×502
Scriptless CSS · SSIM 0.8748 · 0.8 MB · 1,615 DOM elements

Scored against the source at 364×384 in the governing Chromium capture, on the same 1,615-splat population the SVG uses — so the difference between them is the compositor alone, not the fit.

The hero SVG is pure declarative markup, editable in any vector tool: chameleon.svg. A lighter historical variant, chameleon_compact.svg (109 KB raw, ~43 KB gzipped), stores splats as a compact matrix expanded by JS at load — it predates the corrected compositor.

Native PowerPoint shapes

The same source as a deck: every splat is a native DrawingML gradient ellipse, individually selectable and editable in PowerPoint — no embedded bitmap pretending to be a slide. PowerPoint does not run in a browser, so this one is shown as a real Microsoft PowerPoint slideshow capture.

Source photo
Source · 476×502
Real Microsoft PowerPoint slideshow capture of the deck
PowerPoint · 1,674 native DrawingML shapes · gradient-target fit (default) · SSIM 0.8723 · LPIPS 0.1682 · 155 KB deck

Download the editable .pptx and pull a splat off the chameleon yourself. The deck uses the corrected back-to-front shape order that became the default in 0.2.6; the capture and scores come from the real-PowerPoint order study, and the table at the bottom shows what the correction bought.

Splat count is an aesthetic dial, not a quality knob

Fewer splats trade detail for a painterly, abstracted feel. More splats approach photorealism. Both are valid endpoints — pick what your use case calls for.

500 splats · painterly · 87 KB · 94 s train
2 000 splats · near-photorealistic · 347 KB · 8 min train

Both are self-contained HTML files: splat data + a JS runtime doing linear-light alpha-over (matches the optimizer's renderer exactly). Render in ~50 ms (500) / ~300 ms (2 000) in any modern browser. Standalone: canvas_500.html, canvas.html.

Current SVG compositor evidence

The stored corpus covers 21 images and all 33 available seed populations. The table reports seed-0 medians from native-size Chromium captures; every metric grades the complete image, not a crop.

SVG policySSIMLPIPS↓gzipCapture
Historical order0.59730.402361.5 KB227 ms
Correct order, standard stops0.74040.243361.3 KB233 ms
Correct order, high stops0.74830.243994.1 KB255 ms
Per-image gate (July, legacy incumbent)0.71110.243991.3 KB234 ms
Per-image gate (0.2.6 corrected incumbent)0.74830.243982.3 KB241 ms

The gate row records the July study, which raced against a legacy-order incumbent and retained it on four seed-0 images by incumbency alone. The incumbent is now the default corrected-standard emitter, so the gate's floor is the default output. See the method and gate report or the versioned measurements.

The whole corpus, end to end

Seed-0 medians over all 21 governing images: each format trained by the current code under the current defaults and scored on the deployed artifact in its governing renderer. The 2026-08-02 ledger regeneration reproduced the July study medians to the digit; see every artifact live in the corpus gallery.

FormatSSIMLPIPS↓Median size
SVG (full pipeline, Aug 2026 rerun)0.75090.23921,225 KB
Scriptless CSS0.75170.2429
Pixel runtime0.77510.2443
PowerPoint (real slideshow captures)0.69160.2715118 KB

SVG is the fresh schema-v2 full-pipeline rerun; PowerPoint is the regenerated real-slideshow pass; CSS and pixel runtime are the fidelity registry's deployed medians from the same corpus populations. LPIPS is the trusted metric; content class, not format, decides most of it.

One image, every current exporter

FormatSSIMLPIPS↓Population
Pixel runtime (2k ledger)0.91400.1284own fit
SVG, standard gradients0.84940.1672shared fit
SVG, high gradients0.86650.1491shared fit
Scriptless CSS0.87480.1456shared fit
PowerPoint, back-to-front order (default)0.83790.2085own fit
PowerPoint, legacy order0.79310.2621own fit

Chameleon, deployed artifact against the source in its governing renderer — Chromium for the browser targets, real PowerPoint for the deck. The SVG and CSS rows share one splat population, so their differences are purely compositor; the pixel runtime and PowerPoint rows are separately trained runs.

LPIPS scale: ~0.10 excellent · ~0.20 acceptable · ~0.30 visibly different · ~0.50 clearly different.