Skip to content
Motion
ProIn reviewv1.0.0

Fluted Glass

Reeded-glass refraction over an image or spectrum art; the flutes slide with scroll and lean with the pointer.

Controls

14
0.6
0.4
<FlutedGlass />

About

A pane of reeded glass in front of a picture. The view is cut into vertical flutes; each behaves like a half-cylinder that pulls what is behind it toward its centre (most at its edges), softens it a little, catches a highlight just off-centre and leaves a shadow in each groove. Behind the glass is your image, cover-fitted, or soft spectrum art that drifts slowly. Scrolling slides the flutes across the scene and the pointer leans them, so the glass feels physical. It runs on the shared WebGL2 stage; without hardware WebGL2 a CSS version keeps the image (slightly softened) under real flute shading. Original to VibeBox Motion.

Use it when

  • Interiors, cafés, salons, studios and architecture sites want a tactile, crafted hero.
  • A photo needs to sit behind text without competing with it.

Skip it when

  • The image must be seen clearly (a product photo or a face); the glass distorts it on purpose.
  • The image is cross-origin without CORS; it cannot be drawn into WebGL (the CSS version still shows it).

Install

The demo above is live today. Installing Pro items opens with VibeBox Motion Pro; join the waitlist to hear first.

Code

The source is part of VibeBox Motion Pro.

Licensed per seat; it installs with the same shadcn command once Pro opens.

See Pro and join the waitlist

Props

PropTypeDefaultDescription
srcstring—An image behind the glass (same origin, a data URL, or served with CORS). Without it, soft spectrum art.
altstring—Describes the image when it carries meaning; otherwise the glass is decorative.
childrenReactNode—What sits on the glass.
flutesnumber14Flutes across the width.
strengthnumber0.6How strongly each flute bends what is behind it, 0 to 1.
frostnumber0.4Softness of the glass, 0 (clear) to 1 (frosted).
interactivebooleantrueScroll and the pointer slide the flutes across the scene.
classNamestring—Merged with cn(); give it a size and radius.

Accessibility and motion

Keyboard
Not focusable; content on it keeps its own focus order.
Screen readers
Decorative unless alt describes the image, then an image with that name.
Touch
Scrolling slides the flutes; a finger leans them; scrolling is never blocked.
Reduced motion
One still frame of the glass; no drift, scroll or pointer movement.

Edge cases and limits

  • Cross-origin images need CORS headers to reach WebGL; otherwise the CSS version shows.
  • Very many flutes with high strength scramble the image; keep strength under 0.8 above 24 flutes.
  • Rippling caustic light over blue water behind a resort heading

    Sunlight through moving water, over any section: caustic light that wanders and ripples under the pointer.

    Backgrounds · WebGL2

  • A soft spectrum gradient behind a heading and a button

    A soft spectrum mesh gradient that drifts behind your content and leans toward the cursor; still under reduced motion.

    Backgrounds · WebGL2

  • A website wireframe and its finished design split by a rippling liquid seam

    A before-and-after slider whose edge is a wobbling liquid seam; drag, tap or use the arrow keys.

    Cursor and touch · WebGL2

↑ ↓ to move↵ to openesc to close