Inspiration

Gaussian splats are beautiful. Beautifully boring. I wanted to see if meaningful interaction could be built into these photorealistic worlds, in a gamified way.

What it does

TV Blaster is a multiplayer FPS where you blast TVs in photorealistic 3D environments. An AI model (RF-DETR) detects TVs in real-time and highlights them with a machine-vision overlay. You have 30 seconds to destroy as many as you can. Share a link and compete head-to-head — scores sync live over WebRTC.

How we built it

  • Three.js + SparkJS for GPU Gaussian Splatting (photorealistic 3D scenes)
  • RF-DETR Nano via Hugging Face Transformers running entirely in-browser on WebGPU
  • PeerJS (WebRTC) for serverless peer-to-peer multiplayer
  • Custom GLSL shaders for the machine-vision post-processing effect and GPU-based blast deformation

Challenges we ran into

  • ML inference lags behind camera movement — we had to build rotation compensation to keep bounding boxes aligned between frames
  • Gaussian splats aren't meshes, so "destroying" them required writing custom GPU shader programs (dyno modifiers) to deform and fade individual splats

Accomplishments that we're proud of

  • The machine-vision shader effect (scanlines, edge detection, animated brackets) makes the AI detection feel tangible
  • Zero backend — AI inference, 3D rendering, and multiplayer networking all run client-side in the browser

What we learned

  • WebGPU is fast enough for real-time object detection in the browser at playable framerates
  • 1 Person Teams have their Pluses (+) and Minuses (-)

What's next for TV Blaster

  • VR and Mobile
  • Bigger Maps ( both totally doable with Spark's new LOD system )

Peep the Code

https://github.com/seantai/tv-blaster

Built With

  • spark.js
  • transformers.js
  • webgpu
Share this project:

Updates