CrazyGLCrazyGLHomeExploreGitHubBrowse heroesLoading hero…← Back to gallery@crazygl/water-surface

Water Surface

A dark reflective water plane. Stacked Gerstner waves animate the surface and the cursor leaves a continuous wake of expanding Gaussian wavefronts plus a live finger-press depression directly under the pointer. Sky, sun, and horizon refract through every displaced normal.

ReactWebGLInteractiveFont#water#ripples#waves#reflection#refraction#webgl#premium

Usage

import WaterSurface from '@crazygl/hero-water-surface';

export default function Hero() {
  return (
    <WaterSurface
      waterColor="#0a1830"
      skyColor="#5790c8"
      waveAmplitude={0.5}
      rippleStrength={1}
    />
  );
}

Customise

  • ContentcontentType (heading / two-columns / custom) with heading, subheading, optional media, or column1 / column2 / content.
  • StylewaterColor, skyColor, sunColor, horizonColor; waveScale (swell frequency), waveAmplitude (swell height), rippleStrength (cursor wake visibility), speed.
  • TypographyheadingFontFamily.

Best for

  • Travel, hospitality and resort landing pages.
  • Premium product launches, fragrance and beauty brands.
  • Contemplative editorial / brand sites that want a calm, tactile water surface.
01 · Install the package

One command, zero config.

npm install @crazygl/hero-water-surface
02 · Render the component

Import once, drop it in.

The component takes the same props you see in the live customizer on the right — every default ships poster-quality.

hero.tsx
import WaterSurface from '@crazygl/hero-water-surface';

export default function Landing() {
  return (
    <WaterSurface />
  );
}
03 · Use it in a page

SSR-safe by default.

The wrapper renders static HTML on the server and only initialises the canvas after hydration, so search engines see your copy.

page.tsx
// app/page.tsx — works in SSR-first frameworks (Next, Remix, Astro, etc.)
'use client';

import WaterSurface from '@crazygl/hero-water-surface';

export default function Page() {
  return (
    <section>
      <WaterSurface
        heading="Say hi."
        subheading="Your new hero."
      />
      <article>
        <h2>Welcome</h2>
        <p>Your content keeps its own voice below the hero.</p>
      </article>
    </section>
  );
}
You might also like

Similar heroes

Logo Reflected in Water

A glowing brand mark floats above a real 3D water plane. Perspective foreshortening, fog-attenuated distant reflection, and Schlick Fresnel sell the scene as photographic. Stacked Gerstner waves drive the surface; pointer wake rings and a continuous finger-press depression carve into the mirror.

Water Ripple Headline

A bold headline printed on a moonlit pool. Stacked Gerstner waves and pointer-driven Gaussian wakes bend the letters in real time, and the CTA fires a circular wavefront across the surface. Reflective night water with soft moon highlights and a low cinematic camera.

Screenshot Reflected in Chrome Waves

A product screenshot floats above a slow liquid-chrome ocean. Stacked Gerstner waves stretch its reflection across the surface while specular highlights migrate with the crests; pointer movement emits single-wavefront wake rings that distort the mirror in real time.

Ocean Above

Top-down stylised ocean. Wave height-field via FBM, foam crests on the sharpest gradients, sun glints across the highest peaks. Pointer pushes the water.

Liquid Data Core

A glowing ray-marched glass sphere with refracted, dispersed inner orbits of data points — a living analytics engine that reacts to the cursor.

Ice Surface

A glassy frozen pane fills the frame. Tap or drag to spread fresh cracks; old fractures slowly heal.
Live customizer

Water Surface

WaterSkySun / HighlightsHorizonWave Scale1Wave Amplitude0.5Ripple Strength1Speed1Heading FontInteractivityWhich input drives the hero — try Scroll if you want the page to drive motion.
CrazyGL · crazygl.comProgrammable hero sections for real websites.