Serverless infrastructure for AI isn’t the best factor to speak.
Slightly than making an attempt to elucidate it by way of diagrams or lengthy blocks of textual content, we wished folks to really feel the way it works. Each interplay was designed to mirror the product itself: quick, exact, modular, and constructed to scale. This turned a kind of initiatives the place design wasn’t simply supporting the story—it was the story.
The Technical Stack
- Cinema 4D / Redshift / Blender — 3D asset creation and animation pipeline
- Three.js r183.2 — WebGL rendering
- GSAP — Animations and transitions
- Makio MeshLine — Rendering animated 3D paths
May We Construct It with WebGPU?
By Mathis Biabiany
Once I began the venture, I constructed the complete rendering layer utilizing Three.js’ new WebGPURenderer along with TSL (Three.js Shading Language). On the time, Three.js r183.2 was the most recent out there launch.
TSL was actually a pleasure to work with. As an alternative of sustaining a number of GLSL information, supplies, GPU computations, and post-processing results, all the pieces could possibly be described as composable JavaScript node graphs. Three.js would then generate the suitable shaders relying on the rendering backend.
Past the cleaner structure, this was additionally my first alternative to ship an actual shopper venture with WebGPU as an alternative of WebGL, so I wished to push it so far as doable.
Sadly, because the venture grew, actuality caught up. Cerebrium isn’t a single remoted 3D scene. A single canvas accommodates a number of environments, every with its personal supplies, particles, lighting setup, and post-processing pipeline. We additionally wished seamless web page transitions with out displaying a loading display screen each time customers navigated.
The issue wasn’t rendering efficiency as soon as all the pieces was working. The bottleneck got here earlier than the expertise even began. In the course of the preliminary load, Three.js needed to traverse each TSL node graph, generate the corresponding shaders, and compile the GPU pipelines. On our reference machine, this initialization part might take near twenty seconds.
Later variations of Three.js dramatically improved this course of. Benchmarks printed by the venture present shader compilation turning into roughly thrice sooner thanks to raised node-type caching, largely pushed by the work of Renaud Rohlinger.
Sadly, these enhancements merely didn’t exist once we needed to ship. Ready practically twenty seconds earlier than rendering the primary body wasn’t one thing we might justify. So I made the choice emigrate the complete rendering layer again to WebGLRenderer.
Rebuilding Every part in WebGL
The general rendering logic stayed surprisingly comparable. What modified was how specific all the pieces turned.
The TSL Node Supplies have been changed with conventional Three.js supplies, prolonged by way of onBeforeCompile() to inject customized GLSL code. The compute shaders chargeable for particle simulation turned a ping-pong GPGPU system constructed with floating-point textures. The node-based post-processing graph was rebuilt utilizing EffectComposer alongside a number of customized GLSL passes.
One factor this migration taught me is that two shaders implementing precisely the identical concept not often produce similar photos.
- Completely different noise features.
- Completely different tone mapping.
- Completely different mixing equations.
- Completely different lighting fashions.
- Completely different UV interpolation.
- Completely different post-processing pipelines.
All of these seemingly small variations collected right into a noticeably totally different visible outcome. Bloom depth, fog density, gradients, and several other materials colours all needed to be rigorously recalibrated to get well the unique creative route.
Going again to WebGL wasn’t a rejection of WebGPU. It was merely a manufacturing determination based mostly on the maturity of the out there tooling at that second. WebGPU and TSL gave me a way more modular method of constructing visible results. WebGL gave us startup instances that have been predictable sufficient to ship.
3D and WebGL Pipeline
Recreating the Lighting
By Célia Lopez
As a result of many scenes contained animated objects, baking the lighting wasn’t an possibility. Each gentle needed to be recreated immediately inside Three.js. To assist Mathis place all the pieces precisely, I exported easy helper cubes from Cinema 4D. These cubes preserved each the place and orientation of each gentle, making it a lot simpler to recreate the lighting setup contained in the engine.
Generally the best debugging instruments find yourself saving essentially the most time.
Animating the Community
By Mathis Biabiany
One in every of my favourite results within the venture is the animated community of glowing paths. Curiously, nothing really strikes. The paths themselves are utterly static meshes—the phantasm of movement comes fully from the shader. Every path is UV-unwrapped in order that the Y axis runs repeatedly from one finish of the road to the opposite.

The shader merely strikes a slender opacity masks alongside that UV axis, creating the looks of a pulse touring by way of the community. Its width and falloff decide whether or not the heartbeat looks like a pointy sign or a softer vitality path.
To maintain all the pieces from animating in excellent sync, every path receives barely totally different parameters:
- Animation offset
- Pace
- Interval between pulses
That small quantity of randomness makes the entire system really feel way more natural.
We additionally restricted every path’s visibility based mostly on its distance from the digital camera, progressively revealing the community because the digital camera travels by way of the scene. Throughout improvement, an inspector uncovered nearly each parameter:
- Gentle colour
- Bloom threshold
- Bloom radius
- Bloom depth
- Particle opacity
- Reveal distance
- Pulse velocity
- Pulse size
- Pulse softness
- Pulse frequency
The problem was discovering the candy spot the place the strains regarded shiny sufficient to emit gentle with out letting the bloom utterly wash out the main points.
A Shared Atmosphere
By Célia Lopez

To bolster the venture’s signature purple ambiance, we used a customized purple HDRI from Poly Haven because the surroundings map. Past including refined reflections, it helped unify the general colour palette throughout each scene. Generally, lighting consistency is what makes utterly totally different environments really feel like they belong to the identical product.
Optimizing for Efficiency
At first look, the scenes regarded pretty light-weight. In actuality, they weren’t. Sustaining completely easy curves all through the community required extremely subdivided geometry, particularly across the rounded path segments.
Every time I ship a 3D mannequin to builders, I all the time run an optimization cross with Draco. Relying on the venture, I both use David Ronai’s 3D Optimizer or the Babylon.js Sandbox optimization software.

Unhealthy topology
The issue was that each time I exported the complete scene, the geometry was robotically simplified by lowering the polygon rely. Whereas this made the file lighter, it additionally launched seen faceting alongside the curved paths, which undermined the polished aesthetic of the web site.
As an alternative of decreasing the geometry high quality, I spotted I might cut up the mannequin into two separate elements and optimize every mesh independently, with out compromising the smoothness of the curves.
The primary mannequin contained the helper objects, the sunshine paths, and a part of the community. The second contained the remaining path geometry. The cut up was rigorously positioned the place it might be visually imperceptible, permitting us to stream and handle the belongings extra effectively whereas preserving the standard of the geometry.


Baking the Digital camera Animation
Each digital camera motion was baked immediately from Cinema 4D. This gave us full management over timing, framing, easing, and synchronization with the remainder of the expertise, whereas avoiding interpolation variations between purposes.
Designing Safety as an Interplay
By Mathis Biabiany
One part of the web site focuses on safety. As an alternative of representing it with a lock icon, we wished customers to really feel that the infrastructure was protected. The central object is surrounded by an nearly invisible spherical protect. Most of its look comes from a traditional Fresnel impact: surfaces going through the digital camera stay refined, whereas these at grazing angles develop into a lot brighter.
vec3 viewDir = normalize(cameraPosition - vWorldPos);
float NdotV = clamp(dot(vWorldNormal, viewDir), 0.0, 1.0);
float fresnel = pow(1.0 - NdotV, uFresnelPower);
fresnel *= uFresnelStrength;
float noise = valueNoise3D(
vPosition * uFresnelNoiseScale +
uTime * uFresnelNoiseSpeed
);
fresnel *= 1.0 + (noise * 2.0 - 1.0) * uFresnelNoiseAmount;
A layer of animated procedural noise subtly modulates the Fresnel depth, stopping the protect from feeling completely static. On prime of that, a hexagonal grid is projected onto the sphere and blended additively with the Fresnel impact. Mixed with bloom, it gives the look that the protect is producing its personal vitality.
However the interplay doesn’t cease there. A raycaster repeatedly tracks the mouse place on the sphere and writes it into a short lived texture. The shader then samples that texture as a dynamic masks, regionally illuminating close by hexagons earlier than progressively fading them over time.
As an alternative of reacting immediately and disappearing instantly, the protect briefly remembers each interplay. That refined persistence helps promote the phantasm that the pressure discipline absorbs, diffuses, and dissipates vitality throughout its floor.
Credit
Company – KOKI-KIKO
Technique & PO – Kim Levan
Inventive Path & Design – Louis Paquet
3D – Célia Lopez
Growth – Deven Caron, Pier-Luc Cossette
WebGL – Mathis Biabiany

