UI Lab
Gallery of GPU Shader Art

UI Lab

An exhibition of 50 interactive and 75 cinematic particle text effects — each rendered in real-time with GLSL shaders. Hover to interact. Click to enter.

WebGL EXH · 2026 / EARLY RENAISSANCE

Title

The Birth of Venus

Artist

SANDRO BOTTICELLI

Edition

c. 1485 · ORIGINAL

Exhibition Status

Live Rendering

Medium

GPU Particles · GLSL

1 / 5
// West Wing

Interactive Effects

Move your cursor over each painting to reveal the particle effect. Each piece responds to your touch like a living canvas.

50EXHIBITS
// East Wing

Cinematic Animations

Watch particles assemble into text through carefully choreographed entrance animations. Each transition tells a story.

75EXHIBITS

Special

26 exhibits
Explode inward
#50

Explode inward

Particles start scattered, implode to targets

origin = random * 3W, mix inward

Starburst
#51

Starburst

Particles burst from center outward then settle

origin = center, expand past target, settle

Fireworks
#52

Fireworks

Multiple burst points, particles fly to targets

origin = burstPoint + random * burst

Vortex in
#53

Vortex in

Particles spiral inward from outer ring

origin = spiral(angle, maxR)

Tornado in
#54

Tornado in

Particles twist down/up into position

origin = spiral + heightOffset

Orbit in
#55

Orbit in

Particles orbit center, then spiral into targets

angle = t * speed, r = lerp(maxR, dist, ease)

Scatter gather
#56

Scatter gather

Particles scatter outward then gather back

Phase 1: expand, Phase 2: contract to target

Teleport
#57

Teleport

Particles blink in sequentially at full opacity

if t > delay: alpha = 1, no movement

Quantum assemble
#58

Quantum assemble

Particles blink in at random quantum times

delay = random * duration, instant appear

Pixelate in
#59

Pixelate in

Particles start blocky/quantized, smooth to text

origin = floor(target / gridSize) * gridSize

Dissolve in
#60

Dissolve in

Particles materialize from noise pattern

alpha = noise(target.xy, t) > threshold

Materialize
#61

Materialize

Particles fade in with slight scatter, then settle

alpha = ease, pos = target + scatter * (1-ease)

Blur in
#62

Blur in

Particles start with large z-spread, focus to plane

origin.z = random * spread, mix z to 0

Scale up
#63

Scale up

Particles start at 0 size, grow to full size

pointSize = uSize * ease, no movement

Scale down
#64

Scale down

Particles start huge, shrink to normal size

pointSize = uSize * (1 + (1-ease) * 10)

Flip X
#65

Flip X

Particles rotate in on X axis (3D flip)

angleX = (1-ease) * PI, pos.z = sin(angle) * depth

Flip Y
#66

Flip Y

Particles rotate in on Y axis (3D flip)

angleY = (1-ease) * PI, pos.x += sin(angle) * depth

Cascade
#67

Cascade

Particles cascade in like dominoes falling

delay = i / count * duration, sequential

Liquid flow
#68

Liquid flow

Particles flow in like liquid, viscous motion

origin = offscreen, pos = origin + flow(t)

Constellation form
#69

Constellation form

Stars twinkle in sequentially, then connect

delay = random, alpha = twinkle(t, delay)

Typewriter
#70

Typewriter

Letter-by-letter reveal

delay = charIndex * charDelay, per-letter

Curtain open
#71

Curtain open

Particles split from center, open like curtains

origin.x = target.x ± (W/2 * (1-ease))

Venetian blinds
#72

Venetian blinds

Particles appear in horizontal strips sequentially

delay = floor(yNorm * strips) / strips

Scanline
#73

Scanline

Particles appear following a scanning line

delay = yNorm, bright scanline at y = progress

Glitch assemble
#74

Glitch assemble

Particles glitch in with random offsets then settle

origin = target + glitch, glitch decreases with t

Ink spread
#75

Ink spread

Particles spread from a point like ink in water

origin = point, r = ease * dist, turbulent

Paintings

Masterworks rendered as thousands of GPU particles. Hover to scatter — watch them reform into the painting.

Visual Style:
The Birth of Venus

The Birth of Venus

Sandro Botticelli, c. 1485

Mona Lisa

Mona Lisa

Leonardo da Vinci, c. 1503–1519

The Night Watch

The Night Watch

Rembrandt van Rijn, 1642

Girl with a Pearl Earring

Girl with a Pearl Earring

Johannes Vermeer, c. 1665

The Great Wave off Kanagawa

The Great Wave off Kanagawa

Katsushika Hokusai, c. 1831

Liberty Leading the People

Liberty Leading the People

Eugène Delacroix, 1830

Napoleon Crossing the Alps

Napoleon Crossing the Alps

Jacques-Louis David, 1801

The Scream

The Scream

Edvard Munch, 1893

The Creation of Adam

The Creation of Adam

Michelangelo Buonarroti, c. 1512

The Starry Night

The Starry Night

Vincent van Gogh, 1889

Self-Portrait

Self-Portrait

Vincent van Gogh, 1889

Café Terrace at Night

Café Terrace at Night

Vincent van Gogh, 1888

Impression, Sunrise

Impression, Sunrise

Claude Monet, 1872

Water Lilies

Water Lilies

Claude Monet, 1916

The Kiss

The Kiss

Gustav Klimt, 1908

The Star (L'Étoile)

The Star (L'Étoile)

Edgar Degas, 1878

The Last Supper

The Last Supper

Leonardo da Vinci, c. 1495–1498

Declaration of Independence

Declaration of Independence

John Trumbull, 1819

Ant Text

1,500 ants with detailed sprites — body, legs, antennae — crawl across the canvas, wandering and stopping like a real colony. They converge to form words, scatter, and reform.

1500ants
ui-lab@colony — ant-text1,500 ants
forming:UI LAB
auto-cycling