Back to the work
Hors saison · Un herbier de l'impossible

Hors saison · Un herbier de l'impossible

Four flowers that don't wait for spring.

Platform
Web
Type
Experience
At the studio
Designed and built by Bloomwise Studio.
Site
hors-saison-botanique.vercel.app

The site, live

The real site, inside the frame: scroll it to explore. Move off the frame to carry on reading this page.

Hors saison · Un herbier de l'impossible

Highlights

  • The flower is a photograph composited in WebGL

    One quad, one fragment shader, and the studio backdrop keyed out by luminance between 0.16 and 0.31. The photograph has no alpha channel: the shader cuts it out, so the site's aubergine shows between the petals and the title slips in behind them. Breathing, rotation around the heart and radial deformation are computed every frame, never prerecorded.

  • The cursor knows whether it is on a petal

    The test re-runs the shader's exact transform in JavaScript, zoom, rotation, breathing and deformation included, then reads a 256 px luminance mask built once at load time with a 2D canvas. Without it the windows would open onto empty backdrop, and the flower's own movement would be enough to throw them off.

  • Nine X-ray windows, wired to each other

    A second photograph, the flower's X-ray, is visible only inside those rectangles: the shader receives their nine coordinates every frame and reveals nothing outside them, with no fade. Their borders, their botanical captions and the threads joining their corners are DOM and SVG laid on top, pixel for pixel in the same place.

  • An exploration that never repeats itself

    Each satellite window visits its own points on the flower, drawn without immediate repetition, with holds of 0.625 to 1.625 second and an instant replacement, threads included, rather than a drift. The exploration clock only advances while the cursor is on the flower: leave the header and everything stops where it stands.

  • A header you can tune, kept by the browser

    From 1 to 9 windows, 60 to 260 px a side, thread density, speed from 0.25 to 4 times. Settings apply live, are stored in localStorage and export as JSON.

  • 1.1 MB, no dependency, no build step

    One HTML file, one CSS file, one script, seven WebP images for 686 KB and five fonts served from the site for 337 KB. Rendering is capped at 1.5 times the screen's density and 45 frames per second, in a low-power WebGL context. Without WebGL the photograph stays put, and the system's reduced-motion setting brings everything to a stop.

Questions

Is the preview on this page the real site?
Yes, it is the site itself, running inside the frame: you browse it in there, and step out of it to carry on reading this page. In the catalogue, the card shows that same header stripped of everything but the flower and the title, and the interaction answers the cursor exactly as it does here.
What do you see without WebGL?
The photograph of the flower, in the same place, with the title, the collection and the rest of the site. It is the X-ray windows that never appear.
Where do the flowers come from?
Nowhere: they don't exist. The five photographs, X-ray included, were produced for the exhibition, and the site says so itself in its footer.
Does it read on a phone?
Yes. The flower switches to a second photograph framed vertically, the collection falls back to a single column, and the cursor windows are never installed, for want of a cursor. The preview on this page only loads from a desktop screen: a desktop site shrunk onto a phone would no longer be readable.

Tech stack

  • HTML
  • CSS
  • JavaScript
  • WebGL
  • SVG
  • Vercel