tween
ComponentsTemplatesShowcaseContact

Command Palette

Search for a command to run...

Getting Started
  • Introduction
  • Installation
  • StoryNew
Guides
  • Motion Principles
  • Scroll and Smooth Scroll
  • Performance and Accessibility
Scroll Animations
  • Sticky Cards Scroll
  • Rise Fan Cards Scroll
  • Rotate Stack Scroll
  • Doodle Lens ScrollNew
  • Slit Open Hero ScrollNew
  • Logo Mask Zoom ScrollNew
  • ASCII Dissolve ScrollNew
  • Lottie Flight ScrollNew
  • Inline Icon Text ScrollNew
  • Starfield ScrollNew
  • Name Swap ScrollNew
  • Spotlight Gallery HeroNew
  • Slit Rotate Hero ScrollNew
  • Stroke Cover ScrollNew
  • Stroke Rows ScrollNew
Text Animations
  • Text Skew Reveal
  • Block Text Reveal
Hover & Cursor
  • Image Trail Cursor
  • Cursor Depth Logo
  • Physics Tag Drop
  • Elastic Card ListNew
  • Magnetic Cards SpringNew
Sliders & Carousels
  • Wheel Fullscreen Carousel
  • Ripple Displacement Slider
  • Three.js Blend Slider
  • Stacked Deck Slider
  • Orbit Cylinder SliderNew
  • Fan Stack SliderNew
  • Exponential Strip SliderNew
  • Dual Column SliderNew
Galleries & Grids
  • Scroll Wave Gallery
Menus & Navigation
  • Shrink Page MenuNew
Preloaders & Intros
  • Floating Items RevealNew
  • Word Cycle RevealNew
  • Tile Grid LoaderNew
Page Transitions
  • Panel Assembly TransitionNew
3D & WebGL
  • Fractal Glass Hero
  • Fluid Cursor Canvas
  • Fluid Portrait Hero
  • Fluid Gradient Canvas
  • Inversion Lens HoverNew
UI Elements
  • Circular Widgets
  • Vinyl Cover
  • Image Explosion Footer
  • Accordion Image FramesNew

(Tween) — Motion registry

Animated components & full sites, one command away.

Product

  • Components
  • Templates
  • Installation
  • Guides
  • Blog
  • Contact

Categories

  • Scroll Animations
  • Text Animations
  • Hover & Cursor
  • Sliders & Carousels
  • Galleries & Grids
  • Menus & Navigation
  • Preloaders & Intros
  • Page Transitions
  • 3D & WebGL
  • UI Elements
TWEEN
ease: power2.inOut0.00s
© 2026 TweenBack to topBuilt by mohammad
  1. Docs/
  2. Components/
  3. Three.js Blend Slider

Three.js Blend Slider

PreviousNext

A wheel- and touch-driven Three.js slider that bends a plane on a velocity-signed sine displacement while a shader wipes vertically between images.

Open in
threejs-blend-slider-demo

components/ui/threejs-blend-slider-demo.tsx
import { ThreeJsBlendSlider } from "@/registry/tween/threejs-blend-slider"

export function ThreeJsBlendSliderDemo() {
  return <ThreeJsBlendSlider />
}

Installation

pnpm dlx shadcn@latest add https://tweenui.dev/r/threejs-blend-slider.json

Usage

import { ThreeJsBlendSlider } from "@/components/ui/threejs-blend-slider"
<ThreeJsBlendSlider
  slides={[
    {
      title: "Chalk Meridian",
      image:
        "https://images.unsplash.com/photo-1760530098172-d28d2e05b659?q=80&w=1600&h=900&fit=crop",
    },
    {
      title: "Mesa Drift",
      image:
        "https://images.unsplash.com/photo-1714229719918-68e7c74a0373?q=80&w=1600&h=900&fit=crop",
    },
  ]}
/>

A single Three.js plane sized to the container renders through a ShaderMaterial. Wheel and touch input on the canvas accumulate a scroll position and intensity: the vertex shader bends the plane on a sine displacement scaled by the smoothed scroll intensity, while the fragment shader wipes vertically between the current and next slide textures based on the fractional scroll position. When input stops the slider snaps to the nearest slide, marks itself stable, and the title swaps with a clipped translate transition. The renderer is sized to the component (not the window), input is scoped to the canvas, and a ResizeObserver rebuilds the plane geometry on resize. When prefers-reduced-motion: reduce is set it renders a single static frame of the first slide.

Props

PropTypeDefaultDescription
slidesThreeJsBlendSlide[]6 defaultsEach slide is { title, image, url? }. Use 16:9 images.
backgroundstring"#d6cbbd"Bottom color of the backdrop gradient.
foregroundstring"#fbf7f1"Title text color.
wheelSpeednumber0.001How fast wheel/touch delta advances the slider.
positionSmoothingnumber0.05Lerp factor toward the target scroll position.
intensitySmoothingnumber0.5Lerp factor toward the target distortion intensity.
classNamestring—Extra classes on the outer section.
Ripple Displacement SliderStacked Deck Slider

On This Page

InstallationUsageProps

Contribute

  • Report an issue
  • Request a feature
  • Edit this page