惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Google DeepMind News
Google DeepMind News
The GitHub Blog
The GitHub Blog
Engineering at Meta
Engineering at Meta
N
Netflix TechBlog - Medium
Y
Y Combinator Blog
aimingoo的专栏
aimingoo的专栏
A
About on SuperTechFans
V2EX - 技术
V2EX - 技术
Webroot Blog
Webroot Blog
Google Online Security Blog
Google Online Security Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
AI
AI
N
News and Events Feed by Topic
S
Secure Thoughts
www.infosecurity-magazine.com
www.infosecurity-magazine.com
The Cloudflare Blog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
T
Tailwind CSS Blog
Vercel News
Vercel News
V
Vulnerabilities – Threatpost
Spread Privacy
Spread Privacy
Know Your Adversary
Know Your Adversary
人人都是产品经理
人人都是产品经理
I
Intezer
Schneier on Security
Schneier on Security
Martin Fowler
Martin Fowler
J
Java Code Geeks
K
Kaspersky official blog
H
Heimdal Security Blog
O
OpenAI News
I
InfoQ
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
云风的 BLOG
云风的 BLOG
Hacker News - Newest:
Hacker News - Newest: "LLM"
Blog — PlanetScale
Blog — PlanetScale
S
Schneier on Security
S
Security @ Cisco Blogs
Security Latest
Security Latest
PCI Perspectives
PCI Perspectives
H
Hacker News: Front Page
C
CERT Recently Published Vulnerability Notes
博客园_首页
The Last Watchdog
The Last Watchdog
罗磊的独立博客
L
LINUX DO - 热门话题
U
Unit 42
月光博客
月光博客
Security Archives - TechRepublic
Security Archives - TechRepublic
Scott Helme
Scott Helme

Codrops

Building Ridgeline: Engineering a Real-Time 3D Experience in Webflow | Codrops Magnetic Commerce: Building the Dash Creative Website | Codrops The Craft Behind Memorable Digital Experiences: Inside Unseen Studio | Codrops ZERO: The Engineering Behind a Defiant Interactive Narrative | Codrops Meet the Speakers of the First Three.js Conference | Codrops The Architecture Behind Trionn: Coordinating GSAP, Three.js, Lenis, and Web Audio | Codrops Where Stories Become Interactive Worlds: How makemepulse Brings Ideas to Life Across Web, XR, and Beyond | Codrops The Sleepers: Creating an Atmospheric WebGL Experience with Lightweight Techniques | Codrops Building an Interactive Wave Propagation Cube Grid with Three.js | Codrops Ten Years Away: Designing an Interactive Comic for Studio375’s Tenth Anniversary | Codrops Building a Scroll-Driven 3D Gallery Using a Blender Camera Path with Three.js and GSAP | Codrops From Years of Client Work to a Next.js + Sanity Starter Kit | Codrops Sculpting a Digital Athlete: Capturing Stefanos Tsitsipas Beyond the Court | Codrops Building Persistent Page Transitions with WebGPU and Vanilla JavaScript | Codrops Inside Bisous: Designing an Editorial Experience for Cinematic CGI | Codrops Engineering the Web Experience Behind Shopify’s Spring ’26 Edition: Everywhere | Codrops Shaping Stories into Experience: The Work of Kevin Lam | Codrops Testing What Users Actually See with Vitest and Chromatic | Codrops Podium: Building a Website Where Running Becomes Storytelling | Codrops Designing Beyond the Surface: How DashDigital Turns Complexity into Clarity | Codrops Creative Entrepreneurship: Designing the Machine | Codrops Exploring 3D Image Rotations on Scroll | Codrops Always Building, Always Learning: Cyd Stumpel’s Journey Through the Modern Web | Codrops Designing A Better Lou: Reducing Cognitive Load Through Design, Content, and Systems | Codrops Sketching the Impossible: A 3D Portfolio Built Without a Single 3D Model | Codrops Building Horeca: Advanced Motion Design in Webflow Without the Performance Trade-Offs | Codrops Building an Interactive Digital Stamp Collection with Shaders, Postcards, and Playful Inspection | Codrops No Two Paths Alike: Inside San Rita’s Approach to Digital Experiences | Codrops The Making of the New Lesse Studio Website: Clarity, Performance, and Intentionality | Codrops Creating a Thumbnail Flow Animation with GSAP MotionPath | Codrops Forging Her Own Path: Houmahani Kane’s Journey in Creative Development | Codrops Beaucoup and the Pursuit of Memorable Experiences | Codrops The Future of Emotional Technology: Comfort Websites for Growth and Self-Awareness | Codrops The Never Ending Story: Building a Seamless Infinite Scroll Experience with GSAP & Lenis | Codrops Whooshes, Snaps and Shaders: Adrien Vanderpotte and the Feeling of the Interface | Codrops Building a Scroll-Driven 3D Cube Gallery in Webflow with GSAP | Codrops Creating Scroll-Driven SVG Map Animations with GSAP | Codrops Made With Gsap: Building a Fun Gravity-Based Mouse Trail | Codrops 80s Business Tech and Seamless Scene Transitions: Inside Shader.se’s Scroll-Driven WebGPU Pipeline | Codrops Merlin: The Code Boutique Turning Motion Into Digital Magic | Codrops Designing Ourselves: The New Obys Identity and Website | Codrops Exploring the HTML-in-Canvas Proposal | Codrops Le:mma Studio: Building the Feeling Behind the Screen | Codrops From Shader Uniforms to Clip-Path Wipes: How GSAP Drives My Portfolio | Codrops Reverse-Engineering Claude AI’s Mascot Animations with SVG and GSAP | Codrops Akaru: Crafting Precision-Driven Digital Experiences | Codrops Designing Against the Gallery: A Two-Year Journey to a Layered Portfolio Experience | Codrops Between Human and Machine: Sofia Papadopoulou’s Approach to Augmented Creativity | Codrops More Than a Portfolio: Building a Scroll-Driven 3D World with Something to Say | Codrops Rhumb Studio: Small but Mighty, Shaped by Curiosity | Codrops Susurrus: Crafting a Cozy Watercolor World with Three.js and Shaders | Codrops Building 4WIDE: Turning Distortion, Blur, and Motion into a Coherent Experience | Codrops A Playful Clip Menu with GSAP’s easeReverse | Codrops False Earth: From WebGL Limits to a WebGPU-Driven World | Codrops Interactive Storytelling for the Web: Building Immersive Stories with Timelines, 3D, and Layered Scenes | Codrops The Art of Complex Motion: Corentin Bernadou’s World of Shaders and Experimentation | Codrops They Call Me Giulio: The Making of a Cinematic Cyberpunk Portfolio | Codrops Lusion: Where Digital Craft Meets Ambitious Experimentation | Codrops The Exat Microsite: Pushing a Typography Showcase to New Creative Extremes | Codrops A Single DM, a First SOTD, and the Start of Chanh M. Ho’s Creative Journey | Codrops Creating Custom Page Transitions in Astro with Barba.js and GSAP | Codrops R—K ’26: The Thinking and Code Behind a Portfolio Led by Presence | Codrops Building the Maxima Therapy Website: React, GSAP, and Dabbling with AI | Codrops Where Engineering Meets Craft: Edoardo Lunardi’s Obsession with the Details | Codrops Animating 160,000 Cubes in Three.js to Visualize Dithering | Codrops Arnaud Rocca’s Portfolio: From a GSAP-Powered Motion System to Fluid WebGL | Codrops Where Confidence Needs No Decoration: The Malvah.Studio Story | Codrops Motion Highlights #17 | Codrops
Building Cerebrium: Making Serverless Infrastructure Tangible | Codrops
By Célia Lopez and Mathis Biabiany · 2026-07-23 · via Codrops

Serverless infrastructure for AI isn’t the easiest thing to communicate.

Rather than trying to explain it through diagrams or long blocks of text, we wanted people to feel how it works. Every interaction was designed to reflect the product itself: fast, precise, modular, and built to scale. This became one of those projects where design wasn’t just 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

Could We Build It with WebGPU?

By Mathis Biabiany

When I started the project, I built the entire rendering layer using Three.js’ new WebGPURenderer together with TSL (Three.js Shading Language). At the time, Three.js r183.2 was the latest available release.

TSL was honestly a joy to work with. Instead of maintaining multiple GLSL files, materials, GPU computations, and post-processing effects, everything could be described as composable JavaScript node graphs. Three.js would then generate the appropriate shaders depending on the rendering backend.

Beyond the cleaner architecture, this was also my first opportunity to ship a real client project with WebGPU instead of WebGL, so I wanted to push it as far as possible.

Unfortunately, as the project grew, reality caught up. Cerebrium isn’t a single isolated 3D scene. A single canvas contains multiple environments, each with its own materials, particles, lighting setup, and post-processing pipeline. We also wanted seamless page transitions without displaying a loading screen every time users navigated.

The problem wasn’t rendering performance once everything was running. The bottleneck came before the experience even started. During the initial load, Three.js had to traverse every TSL node graph, generate the corresponding shaders, and compile the GPU pipelines. On our reference machine, this initialization phase could take close to twenty seconds.

Later versions of Three.js dramatically improved this process. Benchmarks published by the project show shader compilation becoming roughly three times faster thanks to better node-type caching, largely driven by the work of Renaud Rohlinger.

Unfortunately, those improvements simply didn’t exist when we had to ship. Waiting nearly twenty seconds before rendering the first frame wasn’t something we could justify. So I made the decision to migrate the entire rendering layer back to WebGLRenderer.

Rebuilding Everything in WebGL

The overall rendering logic stayed surprisingly similar. What changed was how explicit everything became.

The TSL Node Materials were replaced with traditional Three.js materials, extended through onBeforeCompile() to inject custom GLSL code. The compute shaders responsible for particle simulation became a ping-pong GPGPU system built with floating-point textures. The node-based post-processing graph was rebuilt using EffectComposer alongside several custom GLSL passes.

One thing this migration taught me is that two shaders implementing exactly the same idea rarely produce identical images.

  • Different noise functions.
  • Different tone mapping.
  • Different blending equations.
  • Different lighting models.
  • Different UV interpolation.
  • Different post-processing pipelines.

All of those seemingly small differences accumulated into a noticeably different visual result. Bloom intensity, fog density, gradients, and several material colors all had to be carefully recalibrated to recover the original artistic direction.

Going back to WebGL wasn’t a rejection of WebGPU. It was simply a production decision based on the maturity of the available tooling at that moment. WebGPU and TSL gave me a much more modular way of building visual effects. WebGL gave us startup times that were predictable enough to ship.

3D and WebGL Pipeline

Recreating the Lighting

By Célia Lopez

Because many scenes contained animated objects, baking the lighting wasn’t an option. Every light had to be recreated directly inside Three.js. To help Mathis position everything accurately, I exported simple helper cubes from Cinema 4D. These cubes preserved both the position and orientation of every light, making it much easier to recreate the lighting setup inside the engine.

Sometimes the simplest debugging tools end up saving the most time.

Animating the Network

By Mathis Biabiany

One of my favorite effects in the project is the animated network of glowing paths. Interestingly, nothing actually moves. The paths themselves are completely static meshes—the illusion of motion comes entirely from the shader. Each path is UV-unwrapped so that the Y axis runs continuously from one end of the line to the other.

The shader simply moves a narrow opacity mask along that UV axis, creating the appearance of a pulse traveling through the network. Its width and falloff determine whether the pulse feels like a sharp signal or a softer energy trail.

To keep everything from animating in perfect sync, each path receives slightly different parameters:

  • Animation offset
  • Speed
  • Interval between pulses

That small amount of randomness makes the whole system feel much more organic.

We also limited each path’s visibility based on its distance from the camera, progressively revealing the network as the camera travels through the scene. During development, an inspector exposed almost every parameter:

  • Light color
  • Bloom threshold
  • Bloom radius
  • Bloom intensity
  • Particle opacity
  • Reveal distance
  • Pulse speed
  • Pulse length
  • Pulse softness
  • Pulse frequency

The challenge was finding the sweet spot where the lines looked bright enough to emit light without letting the bloom completely wash out the details.

A Shared Environment

By Célia Lopez

To reinforce the project’s signature purple atmosphere, we used a custom purple HDRI from Poly Haven as the environment map. Beyond adding subtle reflections, it helped unify the overall color palette across every scene. Sometimes, lighting consistency is what makes completely different environments feel like they belong to the same product.

Optimizing for Performance

At first glance, the scenes looked fairly lightweight. In reality, they weren’t. Maintaining perfectly smooth curves throughout the network required highly subdivided geometry, especially around the rounded path segments.

Whenever I deliver a 3D model to developers, I always run an optimization pass with Draco. Depending on the project, I either use David Ronai’s 3D Optimizer or the Babylon.js Sandbox optimization tool.

Bad topology

The problem was that every time I exported the entire scene, the geometry was automatically simplified by reducing the polygon count. While this made the file lighter, it also introduced visible faceting along the curved paths, which undermined the polished aesthetic of the website.

Instead of lowering the geometry quality, I realized I could split the model into two separate parts and optimize each mesh independently, without compromising the smoothness of the curves.

The first model contained the helper objects, the light paths, and part of the network. The second contained the remaining path geometry. The split was carefully placed where it would be visually imperceptible, allowing us to stream and manage the assets more efficiently while preserving the quality of the geometry.

Baking the Camera Animation

Every camera movement was baked directly from Cinema 4D. This gave us complete control over timing, framing, easing, and synchronization with the rest of the experience, while avoiding interpolation differences between applications.

Designing Security as an Interaction

By Mathis Biabiany

One section of the website focuses on security. Instead of representing it with a lock icon, we wanted users to feel that the infrastructure was protected. The central object is surrounded by an almost invisible spherical shield. Most of its appearance comes from a classic Fresnel effect: surfaces facing the camera remain subtle, while those at grazing angles become much 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 intensity, preventing the shield from feeling perfectly static. On top of that, a hexagonal grid is projected onto the sphere and blended additively with the Fresnel effect. Combined with bloom, it gives the impression that the shield is generating its own energy.

But the interaction doesn’t stop there. A raycaster continuously tracks the mouse position on the sphere and writes it into a temporary texture. The shader then samples that texture as a dynamic mask, locally illuminating nearby hexagons before gradually fading them over time.

Instead of reacting instantly and disappearing immediately, the shield briefly remembers every interaction. That subtle persistence helps sell the illusion that the force field absorbs, diffuses, and dissipates energy across its surface.

Credits

Agency – KOKI-KIKO
Strategy & PO – Kim Levan
Creative Direction & Design – Louis Paquet
3D – Célia Lopez
Development – Deven Caron, Pier-Luc Cossette
WebGL – Mathis Biabiany