A scroll-driven WebGL experience and menu for a Japanese restaurant near Turin.
The idea
Raw ingredients drift in zero gravity, then assemble themselves into a signature roll as you scroll — rice packs onto the core, fish lands, nori wraps, sesame scatters.
Scroll-driven assembly sequence
The stack
Next.js 15, React Three Fiber, GSAP and Lenis on Tailwind v4.
Lenis, the GSAP timeline and the WebGL frame loop all share one ticker, so they agree on position. That single decision is what keeps the scroll and the 3D scene locked together instead of drifting apart.
Performance
Heavily audited, because a WebGL hero is easy to make and hard to make fast:
Bloom-only post-processing stack
One shadow caster
Device pixel ratio capped
Instance counts trimmed
67 promoted compositing layers cut down to 1
Like this project
Posted Sep 3, 2026
A scroll-driven WebGL experience and menu for a Japanese restaurant near Turin. Ingredients assemble themselves into a signature roll as you scroll.