CrazyGLCrazyGLHomeExploreGitHubBrowse heroesLoading hero…← Back to gallery@crazygl/caustic-pool

Caustic Pool Light

Light dancing at the bottom of a swimming pool — animated caustic networks refracted through gentle surface waves, FBM-warped so the pattern never repeats.

ReactWebGLInteractiveFont#caustics#water#underwater#animated#pool#premium

Usage

import CausticPool from '@crazygl/hero-caustic-pool';

export default function Hero() {
	return (
		<CausticPool
			heading="Submerged."
			shallowColor="#28a4d8"
			intensity={1}
			warp={1}
		/>
	);
}

Customise

  • PooldeepColor, shallowColor (depth gradient) and causticColor (the bright network).
  • Causticintensity (brightness), scale (mesh frequency / tightness), speed (flicker rate), warp (how much FBM deforms the lattice).
  • ContentcontentType (heading / two-columns / custom) with heading + subheading, plus headingFontFamily.

Best for

  • Travel, hospitality and resort landing pages.
  • Swimwear, wellness and summer-campaign brands.
  • Calm product backgrounds where you want moving light without hard geometry.
01 · Install the package

One command, zero config.

npm install @crazygl/hero-caustic-pool
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 CausticPoolLight from '@crazygl/hero-caustic-pool';

export default function Landing() {
  return (
    <CausticPoolLight />
  );
}
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 CausticPoolLight from '@crazygl/hero-caustic-pool';

export default function Page() {
  return (
    <section>
      <CausticPoolLight
        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

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.

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.

Logo Inside a Crystal

A slowly rotating crystal prism (3D ray-marched rounded cube) with your logo suspended inside as a glowing emissive mesh. Per-channel IOR refraction on the cube faces splits white light into rainbow seams; caustic highlights pool on the virtual floor; soft bloom on the inner emission.

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.

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.

Sculpted Light Bust

A polished marble sculpture under studio lighting. The pointer orbits a single bright key light around the bust in real 3D, raking it across the stone face for hot specular highlights, cool subsurface shadows in the recesses, and a warm rim that tracks the cursor like a real museum spotlight.
Live customizer

Caustic Pool Light

Pool deepPool shallowCaustic colourCaustic intensity1Caustic scale1Higher = tighter caustic mesh.Animation speed0.5Surface warp1How much the caustic mesh deforms via FBM.Heading FontInteractivityWhich input drives the hero — try Scroll if you want the page to drive motion.
CrazyGL · crazygl.comProgrammable hero sections for real websites.