A 3D model viewer displaying a GLTF asset with interactive rotation controls, demonstrating spark.js real-time texture transcoding from modern image formats to GPU-compressed formats.
Ignacio Castaño's GLTF demo is a quiet flex. On the surface, it's a model viewer. Drag, rotate, zoom. Standard stuff. But under the hood, spark.js is solving a real problem: textures that travel light but render fast. It ships compact image formats like WebP or AVIF over the wire, then transcodes them into GPU-compressed formats in the browser. You get small downloads and efficient VRAM usage. Your bandwidth and your graphics card both thank you.
What makes this interesting technically is the pipeline itself. Most engines treat GPU texture compression as a build-time problem. You pre-bake everything into formats like BC7 or ASTC, ship the heavy files, and hope your CDN can keep up. Spark.js flips that. It keeps assets network-friendly until they hit the client, then converts them to what the GPU actually wants. For anyone building asset-heavy WebGL applications, the WebGPU tradeoff is worth studying.
Ignacio has been quietly building graphics tools for years and if you want to dig deeper, the source is on GitHub, so crack it open and see how the transcoding actually works.
- Live Demo: https://ludicon.com/sparkjs/gltf-demo
- Source Code: https://github.com/Ludicon/spark-gltf-demo
- Author: Ignacio Castaño (GitHub)