WebGL

We rebuilt our own site as a live WebGL universe

Most studio websites show you the work. We wanted ours to be the work.

The new rivluxmedia.com is a single continuous WebGL scene. As you scroll, one population of particles — 110,000 of them on desktop — transmutes through eight different forms. Chaos becomes our monogram. The monogram becomes a torus knot, then a space invader, then a neural sphere, orbital rings, an infinity curve, and finally a portal the camera flies through.

Nothing on that page is a video. Every frame is computed in your browser, right now, responding to your scroll position and your cursor.

Why not just use video?

A video would have been easier. It would also have been a lie.

We tell clients that the web can feel like a place rather than a page. If our own site had faked that with a pre-rendered clip, the argument would be hollow. A live render can't be faked — move your mouse and the particles move away from it. Click and a shockwave ripples outward. That responsiveness is the proof.

There's a practical benefit too. The entire experience — every form, every transition — weighs less than a single second of 4K video.

The one hard idea

The best WebGL sites we studied share a discipline: they commit to one hard idea and execute it cleanly, rather than stacking effects until something impresses.

Ours was one particle system, never interrupted. No scene ever cuts. The particles you see in the hero are numerically the same particles that form the portal at the end. Each one carries a random seed that staggers its journey, so a morph arrives as a wave rather than a switch.

That constraint made a lot of decisions for us. It ruled out per-section scenes. It forced the color system into the shader. And it meant performance had to be designed in from the first line, not optimized in at the end.

Performance is a feature

Rich does not have to mean slow. A few choices did most of the work:

  • Every target shape is generated once at load and uploaded to the GPU. Changing forms rebinds a buffer; it never streams geometry per frame.
  • All motion — the flow field, the morph easing, the cursor repulsion — happens in a vertex shader. The CPU's job each frame is to update a handful of numbers.
  • The renderer measures its own frame rate and quietly steps down resolution and effects if a device struggles.
  • Phones get a lighter tier: 34,000 particles and a thinner post-processing chain.

The result holds 60fps on a laptop while doing something that looks like it shouldn't run in a browser tab.

What this means for your project

We don't think every site should be a particle simulation. Most shouldn't.

What we do believe is that the medium is capable of far more than the template you've been shown, and that "impossible" is usually just a budget for attention that nobody spent. The interesting question isn't whether something can be built. It's whether the idea is worth the craft.

If you have one of those ideas, we'd like to hear it.