Plastic

A keycap under one soft light: the diffuse base keeps its colour, a GGX highlight widened by the size of the light, and a faint sky at grazing angles.

Esc
<Fx effect="plastic" preset="Glossy" />

Features

  • A dielectric under one soft light: GGX highlight widened by the light’s size, a faint sky at grazing angles.
  • Glossy, matte and dished presets.

Use it for

  • Keycaps and physical buttons.
  • Toy-like UI.

On this site

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="plastic" />
</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
color Colourcolor0xece8de
roughness Roughness0.05 to 10.15
dome Dome-1 to 10.35
bevel Bevel0 to 486
angle Light angle-3.141592653589793 to 3.141592653589793-0.5
border Border0 to 240
intensity Intensity0 to 11

Accessibility

Source

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