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.
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.
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.
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.
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 policy | SSIM | LPIPS↓ | gzip | Capture |
|---|---|---|---|---|
| Historical order | 0.5973 | 0.4023 | 61.5 KB | 227 ms |
| Correct order, standard stops | 0.7404 | 0.2433 | 61.3 KB | 233 ms |
| Correct order, high stops | 0.7483 | 0.2439 | 94.1 KB | 255 ms |
| Per-image gate (July, legacy incumbent) | 0.7111 | 0.2439 | 91.3 KB | 234 ms |
| Per-image gate (0.2.6 corrected incumbent) | 0.7483 | 0.2439 | 82.3 KB | 241 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.
| Format | SSIM | LPIPS↓ | Median size |
|---|---|---|---|
| SVG (full pipeline, Aug 2026 rerun) | 0.7509 | 0.2392 | 1,225 KB |
| Scriptless CSS | 0.7517 | 0.2429 | — |
| Pixel runtime | 0.7751 | 0.2443 | — |
| PowerPoint (real slideshow captures) | 0.6916 | 0.2715 | 118 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
| Format | SSIM | LPIPS↓ | Population |
|---|---|---|---|
| Pixel runtime (2k ledger) | 0.9140 | 0.1284 | own fit |
| SVG, standard gradients | 0.8494 | 0.1672 | shared fit |
| SVG, high gradients | 0.8665 | 0.1491 | shared fit |
| Scriptless CSS | 0.8748 | 0.1456 | shared fit |
| PowerPoint, back-to-front order (default) | 0.8379 | 0.2085 | own fit |
| PowerPoint, legacy order | 0.7931 | 0.2621 | own 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.