Caustics Free for Aperveil 1.0 WebGPU shader

Light beneath the surface.

An animated caustic light background with water-like ridges and pointer ripples. Explore the free WebGPU shader and export it for React.

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 Caustics.

Caustics creates a moving web of light using a warped procedural ridge field. Pointer-centered ripples disturb the pattern; depth fade, sharpness and halo control its contrast.

The web suggests underwater light but is not a ray-traced water scene. There is no uploaded image, pool geometry or fluid volume.

0.498 ms legacy timing (method not recorded; not a pure GPU measurement). 1440x900 @ dpr 1.5; Metal driver on macOS Version 26.6.2 (Build 25G83); measured 2026-09-03. This is a recorded headless sample, not a browser FPS or mobile-performance guarantee.

Scale

Size of the light web. Lower gives fewer, broader ribbons.

Filament sharpness

How thin and crisp the light filaments are; low values give soft, wide bands.

Brightness

Brightness of the light web.

Halo

Soft glow around each filament.

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 Caustics.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
Caustics usage
"use client";

import Caustics from "./Caustics";

export default function Hero() {
  return (
    <Caustics
      className="hero-shader"
      scale={6} deepColor="#050d1aff"
      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.

Build a calm opening for a coastal hospitality project. Leave the high-contrast light ridges away from long copy and repeat the water palette in the surrounding UI.

Caustics used behind an example interface
LOW TIDE / RETREATExample composition

Somewhere between sea and stillness

A slower kind of stay.

Quiet mornings. Salt in the air. A little more space to do a little less.

The setting

Close to the water

The feeling

Far from the everyday

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 Caustics yours.

Open editor