Liquid glass

Glass that bends what is behind it: the rim squeezes the page, the middle stays sharp and colour splits only at the edge. Two lenses melt together like liquid.

<Fx effect="lens" />

Features

  • The rim squeezes the page, the middle stays sharp, colour splits only at the edge.
  • Two lenses melt together with a smooth union.
  • Optional frost reads a blurred copy of the backdrop.

Use it for

  • Floating toolbars and docks.
  • A magnifier over screenshots.
  • Draggable glass controls.

Installation

  1. Get runets.
    git clone https://github.com/ziyam-khan/runets
  2. Copy these files into your project, keeping their folders.
  3. Install what they use.
    pnpm add react

Usage

import { Fx } from 'runets'

<div className="card"> {/* position: relative */}
  <Fx effect="lens" />
</div>

API

PropTypeWhat it does
effectstringThe effect’s id, as in the address of this page.
presetstringOne of the presets above; the first by default.
paramsParamsAny parameter from the table, over the preset.
place'under' | 'over'Under the parent’s content (fills, halos) or over it (sparkles, glass). Default under.
radiusnumberCorner radius in points; the parent’s own border radius by default.
backdropstring | PaintWhat glass and distortion read: an image URL, or a function that paints a canvas the size of the parent.
maskPaintAn alpha mask for mask glow and text sheen.
hotbooleanDrives heat: the layer lights in 60 ms and cools over half a second instead of cutting off.
triggernumberChange it to fire a one-shot now (ping, ripple, burst, shockwave, zap).
wakenumberChange it to redraw for a second when something the layer reads, such as its occluders, moves on its own.
shape(time, w, h) => RectThe effect’s shape inside the parent, per frame: a lens that drifts.

Parameters

NameRangeDefault
bevel Bevel1 to 4014
depth Depth0 to 4016
dispersion Dispersion0 to 0.60.14
magnification Magnification0.8 to 1.41.04
presence Presence0 to 11
frost Frost0 to 10
shadow Shadow0 to 10.35
rim Rim0 to 31.6
lightAngle Light angle-3.141592653589793 to 3.141592653589793-2.09
tint Tintcolor0xffffff
tintAmount Tint amount0 to 10

Reads a backdrop: an image or a painted canvas given to the layer, refracted or sampled per pixel.

Accessibility

Source

The code is in src/fx/glsl/surface.ts in runets, MIT licensed.