Skip to main content
Forza Veloce
FORZAVELOCE
ServicesAIPortfolioPricingAboutBlog
Client Portal
Get Started
ServicesAIPortfolioPricingAboutBlog
Start Your ProjectClient Portal →
Forza Veloce
FORZAVELOCE

Speed. Force. Excellence.

info@forzaveloce.com

Navigation

  • Services
  • AI
  • Portfolio
  • Pricing
  • About
  • Blog
  • Contact

Services

  • Web Design
  • E-Commerce
  • SEO & Analytics
  • Branding & Identity
  • Managed Hosting
  • AI Chatbot
  • App Development
  • AI Integration
  • Maintenance & Support

Legal

  • Terms of Service
  • Privacy Policy
  • Cookie Policy
  • Refund Policy
  • Disclaimer
  • Service Agreement

Connect

  • Twitter/X
  • Instagram
  • LinkedIn

© 2026 Forza Veloce. All rights reserved.

Back to Blog
Behind the Build

How We Built the Eau Rouge Hero: 35 Hand-Placed Light Trails and a Depth Shader

FV
Forza Veloce
July 20, 2026
5 min read

Our homepage hero looks like a video. It isn't. It's a still long-exposure image of Eau Rouge — the famous uphill left-right-left at Spa-Francorchamps — brought to life by two layers of hand-built rendering, weighing less than a single Instagram photo.

The first layer is the taillight streams. Each trail is a Catmull-Rom spline — a curve defined by a handful of control points that the renderer interpolates smoothly between. We placed every point by hand: 25 paths for desktop and a separate set of 10 for mobile, each one traced along the actual racing line as it appears in our hero photograph, climbing through the corner and disappearing over the crest. Generic particle libraries scatter dots randomly; these trails follow the geometry of a real corner because a person put them there.

Placing 35 splines by trial and error in code would have been miserable, so we built a tool for it: a small in-house trail editor that loads the hero image, lets us click control points directly onto the corner, tune each trail's color, speed, width, and tail length, and export the result as data. It's the same discipline game studios apply — when the art demands iteration, build the authoring tool first. The editor never ships to visitors; its output does.

At runtime, each trail renders on a 2D canvas in twelve alpha-banded segments — bright at the head, fading through the tail — drawn twice per frame: a wide soft pass for glow and a narrow pass for the light core, composited additively so overlapping trails bloom the way headlights do in long-exposure photography. The whole system is a few kilobytes of hand-written canvas code.

The second layer is depth. The hero image ships with a companion depth map — a grayscale image encoding how far each pixel is from the camera. A fragment shader we wrote in raw WebGL (about fifteen lines of GLSL, no three.js) displaces each pixel based on its depth and your pointer position. Move the mouse and the barrier at the apex shifts more than the treeline behind it: a still photograph gains parallax. On phones, scroll position drives the same effect.

Everything degrades deliberately. The image underneath the canvas is a plain, server-rendered element, so visitors on failing GPUs, readers who prefer reduced motion, and search crawlers all get the full scene instantly. The WebGL and the trails are enhancement, never a requirement — and the whole hero, shaders and splines included, costs about 100 kilobytes on a phone.

That's the philosophy we bring to client work too: bespoke where it creates a feeling you can't buy off a shelf, boring and bulletproof everywhere else.

Tagged with

WebGLCanvasShadersCraftPerformance

Related Articles

Web Design

The Future of Web Design: Trends Defining 2026

6 min read
SEO

SEO Strategies That Actually Work in the Age of AI Search

7 min read
E-Commerce

Building E-Commerce Experiences That Actually Convert

5 min read
Back to All Posts

Ready to put these ideas into action?

Let's discuss how our expertise can help you achieve measurable results for your brand.

Start Your ProjectBack to Blog