CrazyGLCrazyGLHomeExploreGitHubBrowse heroesLoading hero…← Back to gallery@crazygl/screenshot-chrome-waves

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.

ReactWebGL3DImageInteractiveFont#chrome#metal#reflection#3d#waves#screenshot#gerstner#premium

Usage

import ScreenshotChromeWaves from '@crazygl/hero-screenshot-chrome-waves';

export default function Page() {
  return (
    <ScreenshotChromeWaves
      screenshot="/my-app-screenshot.png"
      lightWarmth={0.6}
      chromeTint="#c8cad0"
    />
  );
}

The image's native aspect is preserved (no squashing) — dashboards, mobile mockups, and AI canvases all work.

Customise

  • Screenshotscreenshot (URL), screenshotTilt, screenshotX / screenshotY, screenshotHeight, screenshotBob, screenshotGlow (under-glow bloom).
  • ChromechromeTint (F0 colour), waveAmplitude, waveSpeed, chromeRoughness (mirror → brushed), pointerWake.
  • LightlightWarmth (0 cool cleanroom → 1 golden sunset), driving the studio HDRI and the key light.

Best for

  • Luxury SaaS landing pages and design platforms that want a premium feel.
  • AI tools and fintech dashboards presenting a hero product shot with gravitas.
  • Product-launch and pricing pages where a single screenshot must carry the page.
01 · Install the package

One command, zero config.

npm install @crazygl/hero-screenshot-chrome-waves
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 ScreenshotReflectedInChromeWaves from '@crazygl/hero-screenshot-chrome-waves';

export default function Landing() {
  return (
    <ScreenshotReflectedInChromeWaves />
  );
}
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 ScreenshotReflectedInChromeWaves from '@crazygl/hero-screenshot-chrome-waves';

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

Liquid Chrome Waves

An undulating ocean of liquid chrome. Six dispersive waves displace a mirror surface; a procedural studio HDRI stretches and warps across every crest.

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.

Screenshot in a Floating Metal Frame

Your product screenshot held inside a brushed-metal frame, lit like a physical product photograph. The frame sits at an adjustable static angle, tilts with the pointer for parallax, and optionally rotates to catch studio highlights.

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.

Light Cloth Mesh

A glowing silk sheet woven from neon threads filling the frame and waving in 3D. Drag the pointer across the silk and it leaves a natural rippling wake — each touch sends an expanding wavefront, and the faster you sweep the stronger the ripples. Cyan-to-magenta threads glow on near-black.

Liquid Metal Typography

Heavy 3D headline rendered as molten chrome — letters wobble with FBM noise while staying readable, pointer creates localized ripples on the surface, and clicking triggers a quick splash wavefront. Floats over an image or video backdrop with a user-selectable HDRI driving the reflections.
Live customizer

Screenshot Reflected in Chrome Waves

ScreenshotAny product screenshot, dashboard, or hero shot. AVIF / WebP / PNG / JPG.Tilt8°Forward tilt of the floating screenshot. 6-12° presents the surface to the camera without losing flatness. Negative values tilt the top toward the camera.Screenshot X offset0worldHorizontal position of the screenshot.Screenshot Y offset0worldVertical position of the screenshot. Stacks with Float height.Float height1.1World Y of the screenshot above the chrome surface.Bob amplitude0.05How far the screenshot drifts up/down. 0 freezes the bob.Under-glow1Soft additive glow plane beneath the screenshot, faking bloom.Chrome tintF0 colour of the metal. Cool greys read like polished chrome; warm tones read like rose-gold.Wave amplitude0.05Height of the Gerstner waves. 0.04-0.07 looks like calm metallic ocean.Wave speed0.4Phase speed of the wave stack. Slow values (0.3-0.6) read as heavy liquid metal.Roughness0.08Surface roughness. Below 0.1 is mirror chrome; above 0.25 starts reading as brushed metal.Pointer wake1Strength of single-wavefront ripples emitted by pointer movement. 0 disables interactive wake.Light warmth0.60 = cool blue HDRI, 1 = warm sunset. Drives the studio gradient and the directional key light.Heading FontInteractivityWhich input drives the hero — try Scroll if you want the page to drive motion.
CrazyGL · crazygl.comProgrammable hero sections for real websites.