Infinite Jelly Glass
An infinite spherical carousel of glass cards refracted through a GPU-simulated XPBD cloth.
drag to spin · click a card for details · arrows to move
Real-time graphics demos: WebGPU, TSL, GLSL, three.js and React Three Fiber. 35 of them, each one live in the browser. Built by Niccolò Fanton.
An infinite spherical carousel of glass cards refracted through a GPU-simulated XPBD cloth.
The ultramock.io blurs rebuilt in TSL, with a thin-lens circle-of-confusion model.
Reeded, hammered, ripple, prism and a fly's-eye microlens array as a WebGPU post pass.
A watercolour-blotch image reveal with a depth-aware front, reverse-engineered from davidwhyte.com.
A cube on every vertex of a wireframe icosahedron, with hand-written TAA and Kawase bloom.
A real inter-frame decoder loop: motion vectors and residuals fed the wrong reference frame.
The datamosh decoder loop as a React Three Fiber component.
Real-time ordered Bayer dithering as a composable post-processing effect.
ASCII/halftone post-processing with a glyph atlas, Sobel edges and per-cell memory.
A Porsche re-rendered through a dithered ASCII pass, with a fluid mouse-trail noise displacement.
A scroll-driven 3D showcase and colour configurator built with Angular, three.js and Theatre.js.
A performant, high-quality R3F scene built for a Codrops tutorial on optimisation.
GPGPU particles morphing between shapes on a 4D simplex flow field, with bloom and DOF.
A real-time visual-persistence trail as a post-processing effect.
Twenty reveal, dissolve and transition effects over a gaussian splat figure, built on Spark.
An infinite tunnel of image and video cards with wheel scroll, hover focus and SVG clipping.
One point drawing a Lissajous trail: autoClear is off, so every frame accumulates.
A 1000x1000 plane displaced by a single image bound as displacement, colour and alpha at once.
Physics-based drag and drop for React Three Fiber, on rapier and use-gesture.
A drop-in OrbitControls for R3F with smooth, damped inertial zoom.
An N monogram built from 3D bones, with transmission-material chromatic aberration.
A column of 100 additive particles falling through bloom, film noise and scanlines.
A moss diorama captured as a gaussian splat, composited with a glTF mesh under an HDRI.
The numeral 3 through an ASCII pass with a palindromic glyph ramp and N8AO.
A grid of repeated glTF models receding into depth, with controls that bypass React renders.
An endless tunnel of black and gold panels under god rays, lens flare, DOF and bloom.
The numeral 6 built from 200,000 particles sampled off a glTF surface.
A browser WebXR engine for shared 3D worlds: animated avatars, peer-to-peer voice, portals and ENS login.
Roll a physics-driven ball across a desert dune and through a glowing portal, in Angular and three.js.
A 3D gaussian splat scene rendered in three.js under a grounded HDRI skybox, with orbit controls.
A multiplayer three.js world: walk a wireframe dome together with peer-to-peer proximity voice chat.
Saved Instagram posts and Reels flying through an infinite, foggy WebGL tunnel.
A Tweakpane v4 layer: localStorage persistence, a draggable panel, presets and shareable config links.
Site for a Milan creative studio: a WebGL cover over a Next.js editorial layout.
My portfolio: work, writing and links, built with Next.js and Tailwind.