Desktop optimized

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

Go to home

Panoramic Carousel

A high-performance WebGL spatial carousel. Creates an immersive, 3D panoramic wrap of images that responds fluidly to scroll and touch momentum anywhere on the screen, featuring custom GLSL shaders for kinetic RGB splitting, aerodynamic flexing, and motion blur.

Last Modified:Aug 17, 2026

Install

CLI

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

Or install a specific demo variant:

panoramic-carousel-demo
$pnpm dlx shadcn@latest add https://ui.satisium.com/r/panoramic-carousel-demo.json

Manual

1. Install Dependencies

Dependencies
$pnpm add three @react-three/fiber @react-three/drei gsap @gsap/react clsx tailwind-merge

2. Add Source Code

Props

PropTypeDefaultDescription
imagesstring[]RequiredArray of image URLs to load into the deck.
cardWidthRationumber0.4Percentage of screen width the card occupies on desktop.
cardAspectRationumber1.4Width-to-height ratio of the cards.
scrollSensitivitynumber0.005How heavily the scroll wheel affects movement.
lerpFactornumber0.08How buttery smooth the momentum is (0.01 to 1).
radiusMultipliernumber1.4Distance from the camera to the cards.
gapMultipliernumber1.1Spacing between cards along the curve.
depthMultipliernumber1.0How deeply the curve pushes backward on the Z-axis.
baseFovnumber45Base camera field of view.
maxFovZoomnumber35Maximum FOV zoom out when scrolling fast.
fovMultipliernumber1.2How aggressively the camera zooms based on speed.
motionBlurIntensitynumber0.003Intensity of the 7-tap motion blur shader.
chromaticAberrationIntensitynumber0.005Intensity of the RGB color split on scroll.
flexMultipliernumber0.15How much the cards bow/bend aerodynamically.
cornerRadiusnumber0.04SDF calculated corner rounding.
parallaxIntensitynumber0.08Parallax shift multiplier for the image inside the card.