Pulled Ink preview
Pulled Ink Pro · Coming soon for Aperveil 1.0 WebGPU shader

Ink, taken down the screen.

A WebGPU row of flames that puff, climb and lick the way buoyant fires do, pulled down the frame by an actual line integral, torn into lanes by the nicks in the blade, with the grain sitting on the print.

Meet the surface

Part of Aperveil Pro · Coming soon. The live demo, editor and downloads will open in a later release. Free shaders and blocks are available now.

Pro · Coming soon for Aperveil 1.0React exportRaw WGSL

Inside Pulled Ink.

What gets pulled is fire, and it moves the way fire moves because the motion comes from how buoyant flames behave. A pool fire sheds a vortex from its base at a steady rate and necks and bulges with it; that rate is f = 1.5/√D for a fire of width D (Cetegen & Ahmed, 1993), so every flame here keeps its own time and a narrow one flickers faster than a wide one. The gas accelerates as √z as it rises (McCaffrey), so a bulge reaches height z after 2√z/v₀ and its crests spread apart as they climb; above the flame tip only the shed puffs carry on, cooling as they go. That fire is then pulled: sampled at many points along the stroke and integrated, which carries its structure along the stroke — a flame stretches while its edges across the stroke stay sharp. A few columns are nicked and take their own offset along the stroke, either way, so the print tears into fine lines both darker and brighter than the ink around them. Grain is added after the pull, never through it.

Not a combustion model and not a print simulation. There is no chemistry, no radiation transport and no solved velocity field: the flames are placed and timed by those scaling laws, not evolved. There is no ink viscosity, no paper absorption, no screen mesh, no registration and no second colour pass. The pull is one straight direction applied uniformly, and the blade's nicks are a hash rather than a modelled edge.

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

Flame spacing

How many flames the frame holds. Each flame keeps its own width, and with it its own puffing rate.

Pull angle

Direction the blade pulls the ink, in degrees; 90 pulls straight down.

Pull length

How far along the stroke the line integral reaches. This is the length of the smear, not its softness.

Integral taps

How many points along the stroke are integrated. Fewer taps band the smear; this is the real cost of the shader.

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

Coming soon.

This Pro surface's demo, editor and downloads will open in a later release. Free shaders and blocks are available now.

Explore shaders

Made for a real interface.

Give an editorial cover, a music or publishing page, or a poster-led launch a surface that looks made rather than rendered. Set type over the calmer ground and let the blooms carry the colour.

Pulled Ink used behind an example interface
SLOW PRESSExample composition

Edition of one hundred

Pulled by hand, once each.

An illustrative cover for a press that prints its own covers and numbers them in pencil.

Method

One screen, one colour, one pull.

Registration

Approximate, on purpose.

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.

Before you ship.

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

All shaders

Make Pulled Ink yours.