Ocean Swell Free for Aperveil 1.0 WebGPU shader

A slower horizon.

A calm ocean background for React with directional swell and a visible horizon. Tune wave shape, roughness and sky colors, then export the WebGPU scene.

Part of the Free collection for Aperveil 1.0. Public live preview and Color Looks are open. Free Export Kits do not require an account. Purchasing is not available yet.

Free for Aperveil 1.0React exportRaw WGSL

Inside Ocean Swell.

Ocean Swell combines directional waves, analytic surface slopes and a bounded surface intersection to render water beneath a sky. Detail is controlled with distance to keep the horizon calmer.

There is no mouse interaction, buoyancy system, foam simulation or FFT ocean spectrum. It is a self-contained procedural scene for interfaces.

2.818 ms GPU timestamp median; p95 3.342 ms. 1440x900 @ dpr 2; Metal driver on macOS Version 26.6.2 (Build 25G83); measured 2026-09-05. This is a recorded headless sample, not a browser FPS or mobile-performance guarantee.

Wave height

How tall the swells are.

Wavelength

Length of the swells; higher values give longer waves.

Wave direction

Direction the swells travel, in radians.

Crest sharpness

How peaked the wave crests are; 1 gives rounded swells.

Color Looks preserve these settings. Open the editor for all 12 controls.

From preview to your project.

Choose a Look, tune it in the editor, then download the Export Kit. Install the runtime and copy the generated component into your project.

Every control in the editor is a typed prop. Leave a prop out to keep the value you exported; change one and the running shader updates without restarting. Give the surface a size and pass fallback for browsers without WebGPU.

In Next.js, use a client component and give its container an explicit size. Keep headings, links and accessible content in HTML above the decorative canvas.

Part of the Free collection for Aperveil 1.0. Public live preview and Color Looks are open. Free Export Kits do not require an account. Purchasing is not available yet.

Open editor & export
Markdown guide

Usage example — download OceanSwell.tsx from the editor first. This example imports that local file; it is not the shader component itself.

Terminal
npm install ./vendor/aperveil-runtime-0.1.0.tgz ./vendor/aperveil-react-0.1.0.tgz
OceanSwell usage
"use client";

import OceanSwell from "./OceanSwell";

export default function Hero() {
  return (
    <OceanSwell
      className="hero-shader"
      waveHeight={0.45} deepColor="#041923ff"
      fallback={<div className="hero-shader-fallback" />}
    />
  );
}

// .hero-shader { width: 100%; height: 560px; }

Download and extract the complete Export Kit first. Run its local package command from the ZIP root, then copy the component into your project. Public npm and CLI distribution is coming soon.

Made for a real interface.

Open a travel or wellbeing page with a quiet horizon. Place the heading in the sky and keep the water visible across the lower part of the viewport.

Ocean Swell used behind an example interface
OFFSHORE / SLOW STAYSExample composition

Somewhere to exhale

Nothing on the horizon. Everything ahead.

Wake to the sound of the water. Let a day unfold without a schedule, somewhere close to the sea.

Morning

The first light on the water.

Evening

One more moment by the shore.

Illustrative layout, not a customer project. The image is a still preview of the selected Look.

An illustrative layout. Your content stays in HTML; the shader sets the atmosphere.

Try this surface in the editor

Before you ship.

What this surface does, where it fits, and where it stops.

All shaders

Make Ocean Swell yours.

Open editor