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
Built With
- spark.js
- transformers.js
- webgpu
Log in or sign up for Devpost to join the conversation.