Ryan Kamp

Ryan
Kamp

Drag to spin it. Tap a spot to poke it.

Swap the toy
Contents

One name, in splats. Turn on JavaScript to tip them out.

I’m Ryan Kamp, a master’s student in computer science at the University of Cincinnati. I’m interested in digital media, and lately in Gaussian splats as something to play with: a toy you can spin, poke, paint, drop and blow on. That one up there is my name. The full toy box is Splashery.

Every letter rings its own note once the sound is on. Whatever you do to it, Copy link packs the toy, its paint and the way it’s turned into the address. More, on the label, builds it from more splats.

What’s in the box

Splashery

Splats you can play with. A toy box of 3D Gaussian splats that runs entirely in the browser: pick a toy (a real captured object, or one generated from a seed), spin it, poke it, blow on it, splash paint on it, drop it, watch it fall apart and come back, make your own, and share it as a link, an embed, a GIF or a video.

The real thing, live: a captured cactus from Splashery’s shelf.

About 8 MB (the engine plus one scan), so it waits until you ask. Or open Splashery in its own tab.

My part

I defined the project’s vision and its toy categories, refined the interaction design through hands-on testing, and contributed mathematical recipes.

It is built on the PlayCanvas engine, with WebGPU when the browser has it and WebGL2 otherwise. Static files and ES modules only: no build step, no framework, no server.

  • Toys

    Real scans of up to 450,000 splats, and generated toys built in the browser from seeded recipes: sports balls, planets, food, a neuron that fires, a chess set that plays Morphy’s Opera Game.

  • Eight effects

    Poke, wind, dissolve, drop, magnet, twist, slice and paint. Each runs on the GPU for every splat, every frame, and they stack.

  • A sound for every toy

    Synthesized from a library of about 80 voices. The guitar strums a chord progression; Big Ben plays the Westminster quarters. Off until you turn it on.

  • Pictures and pages

    In the labs: open a PDF, a picture, a GIF or a video and see it made of splats. Photos get one splat per pixel; GIFs and videos recolor their splats every frame.

  • Six ways out

    A link with the whole scene compressed into it, a JSON file, a PNG, a GIF, a WebM video, or an embed: an iframe or a <splashery-toy> element.

  • A manual

    The Tinkerer’s Manual explains how to program splats, level by level, starting with what one splat is: the Gaussian and its covariance.

One splat, up close

The toy above is thousands of these: a flat Gaussian, brightest in the middle, switched off three sigmas out. Stretch it and turn it, and its covariance follows.

Σ = R S Sᵀ Rᵀ

Cutting at 3σ keeps 98.9% of a splat’s paint: 1 − e−4.5. I didn’t take the formula’s word for it; a script adds up 16,777,216 samples and gets 98.889%.

Also on the shelf

Other things I’ve made

Not toys, strictly. Tools for words, for collecting and reading, and for work with coding agents.

  • grooph

    Visual loop graphs for coding-agent workflows. You draw who builds, who checks, where a person decides and when the work stops. grooph checks that every loop names a stop, then compiles the graph into a prompt package for a separate coding-agent harness. It runs no agent and calls no model, and graphs stay on your device.

  • aqrobat

    A local text and emoji QR lab: QR artwork built from letters, symbols or emoji.

  • Amordle

    A free word game with any word length from 2 to 35 letters, three difficulties, a daily puzzle, and ranked multiplayer with an Elo rating. By its own sum: Wordle + Hurdle + Lichess − ads.

  • Ars Magna

    An anagram finder. Give it any text and it returns every way those exact letters can be re-partitioned into real English words, by a deterministic search. Its name is an anagram of “Anagrams.”

  • English OpenList

    A free, open, continuously maintained list of valid English words, about 345,000 of them, with the provenance of every word: which sources attested it, and when. It keeps auditable correction records and has a browser explorer.

  • Link Meteor

    A Chrome extension that collects links with their anchor text and URL in separate fields, for reviewing sources and exporting a research collection. No account, ads, telemetry or backend.

  • resmon

    A local-first literature-monitoring desktop application. It runs scheduled searches across open-access scholarly sources, removes duplicates, and compiles reading reports, with optional summaries.

  • reword_nerd

    A local-first browser workbench that turns a reviewed document, or a set of images, into a portable workbook of rewriting prompts. Everything stays reviewable in the browser, the download is a separate, explicit step, and it contacts no model provider itself.

And at the back of the shelf: The Speed-Accuracy Trade-Off in Perceptual Decision-Making (April 2025), my undergraduate research capstone. It models evidence accumulation as a diffusion process and uses dynamic programming and value iteration to study decision boundaries in a simulated autonomous-vehicle obstacle-avoidance scenario. Code Video

The serious sticker

Research

I’m in the MS program in computer science at the University of Cincinnati, with a concentration in artificial intelligence, and expect to finish in May 2027. My thesis advisor is Dr. Yizong Cheng. Before that, also at UC: a BA in mathematics and a BS in neuroscience, 2025.

What I’d like to work on in digital media starts where Splashery leaves off: a splat is usually a way to look at a captured scene, and I’m interested in what it becomes when it is a material instead, something a person can push around, recolor, hear and hand to a friend.

  • digital media
  • computer graphics
  • scientific visualization
  • software engineering
  • information retrieval