Desktop optimized

Please maximize your browser window or use a larger screen to explore the component library.

Go to home

Velocity Grid

An interactive WebGL component that displays media (image or video) with a fluid, 2D grid-based velocity distortion effect following the cursor.

Last Modified:Aug 17, 2026

Install

CLI

velocity-grid
$pnpm dlx shadcn@latest add https://ui.satisium.com/r/velocity-grid.json

Or install a specific demo variant:

velocity-grid-image
$pnpm dlx shadcn@latest add https://ui.satisium.com/r/velocity-grid-image.json

Or install a specific demo variant:

velocity-grid-video
$pnpm dlx shadcn@latest add https://ui.satisium.com/r/velocity-grid-video.json

Manual

1. Install Dependencies

Since this component leverages WebGL, you will need React Three Fiber and Three.js.

CLI Install
$pnpm add three @react-three/fiber @react-three/drei clsx tailwind-merge

Note: The demos utilize @hugeicons/react and @hugeicons/core-free-icons for the loading fallback, but they are not strictly required for the core component.

2. Add Source Code

Props

PropTypeDefaultDescription
mediaUrlstringThe source URL of the media asset.
mediaType"image" | "video""image"Defines the media type for correct texture processing.
columnsnumber24Number of vertical grid columns.
rowsnumber16Number of horizontal grid rows.
hoverRadiusnumber0.35Proximity spread multiplier (0.0 to 1.0).
shiftMultipliernumber1.5Strength of the displacement shift based on mouse velocity.
trackingSpeednumber2.0Interpolation speed for the wave following the cursor.
imageZoomnumber1.15Base texture scale to prevent edge bleeding during displacement.
enterLeaveSpeednumber1.5Interpolation speed for the enter/leave animation states.
fallbackReact.ReactNodenullOptional fallback UI rendered via Suspense while media loads.
classNamestringundefinedStandard React classNames for the container wrapper.