shodo

An expressive, malleable visual layer for the web

Type, paint and pictures that move and respond, built from small parts you can tune by hand or hand to your coding agent.

What people make with it

shodo

Auras

A word glows out in soft rings of colour.

createAura(draw, { ramp })

Grain fields

Soft shapes blurred wide, with a grain that dithers their colours together.

createBlur(draw, { radius: 70, grain: 1 })
glass

Frosted glass

A pill of glass that blurs and bends what moves behind it.

createGlass(draw).render(scene, w, h, box)

Soft mosaic

Colour drifts under big square pixels.

createMosaic(draw, { cell: 28 })

Mixed paint

Pigments mixed the way paint mixes, not the way screens do.

mixPaint([{ color: blue, factor: 1 - t }, { color: yellow, factor: t }])
shodo

Pictures that respond

Move the pointer over it: the whole picture moves like water.

createRipple(draw).render(scene, w, h)

Wet type

The word arrives wet and dries with a dark rim. Move over it to wet it again.

sheet.load(wetLetters)

Paint inside the letters

The letters hold the paint like masking fluid, and it pools at their edges.

new WetGpu(canvas, w, h, { mask })

Washes that bloom

Run the pointer through a drying wash and the water pushes the colour back.

sheet.brush(a, b, { clear: true })

Make it respond

Coming soon: a place to try the effects on your own words, pictures and paint.