LightEater
A slime mold that eats the light. A million agents follow one rule, sense ahead, turn toward the brightest trail, step, deposit, and the veins they leave are the picture. Point a camera at yourself and the mold finds you.
This page can use your camera. The feed goes straight from the camera into your graphics card, inside this tab. Nothing is recorded, nothing is uploaded, and there is no analytics or tracking anywhere on this page. You can check: the page makes no network requests once loaded (the optional person matte fetches its model from this site, and only when you pick it).
Without a camera the mold feeds on a synthetic light field instead. Your browser will ask permission first; on phones the page must be served over https for the camera to be offered at all.
This browser cannot run the instrument.
It needs WebGL2 with float render targets, which every current browser has when hardware acceleration is on.
Camera off until you say so.
Keys
- 1 to 5
- looks: veinwork, amoeba, ghost, lightning, breath
- [ ]
- body point (the physics under whatever is in frame)
- , .
- field point (the physics of the room)
- X
- swap body and field
- B
- burst: a third of the organism teleports onto the subject in a bloom of light. A tap on the picture bursts where you touched.
- W
- wave: a shockwave. Every agent races outward from the subject behind an expanding ring of light.
- R
- auto: let it run. Every minute or so the scene re-casts itself, a new look, colour and physics, sometimes a burst or a wave, until you touch a scene key. The screen stays awake while it plays.
- C
- colour: arctic, fire, aurora, violet, toxic, rose, mono, video
- M
- matte: auto, motion, saliency, person, edges, luma. The person matte fetches its model from this site (about 10 MB, once) the first time you pick it; the camera feed still never leaves the tab.
- V
- background: off, veil (the feed's light through the palette), full (the feed itself). The mold stays on top; without a camera the synthetic field shows instead.
- A
- sound react: the mold pulses with the room. Bass swells the light, treble quickens the veins, and a sharp hit bursts agents onto the subject. This asks for the microphone, a separate permission from the camera, only when you turn it on; the audio never leaves the tab.
- S
- sound sensitivity: x0.5, x1, x1.5, x2, x3
- Space
- blackout
- 0
- reset to veinwork
- I
- hide or show the status line
What it is
The Jones transport-network model (Jeff Jones, Artificial Life 16(2), 2010). Each agent reads the trail map at three points ahead of it, turns toward the strongest reading, steps forward, and lays trail; the map is blurred and decayed every frame. Vein networks grow, merge, and re-route out of nothing but that loop.
Two things make it an instrument rather than a screensaver. The matte is the pen: every parameter has a field value and a body value, and each agent runs on the blend of the two under the silhouette, so you and the room literally run different physics. And light is food: the camera's brightness is added to what the sensors read, so the mold chases whatever is lit. Move a lamp and it follows.
This page is the basic browser version of LightEater, the full desktop instrument (AGPL), and it runs the desktop's own simulation shaders, vendored file for file. The full app adds projector output, a signal rack, and 4K quality tiers; this page runs the agents and the trail on your graphics card and scales the agent count to what your machine can hold at speed, so the count in the status line is yours, not a fixed number.
Privacy
The camera feed is uploaded frame by frame into a texture on your GPU and read only by the shaders on this page. It is never drawn to anything that is saved, never sent anywhere, and this page loads no analytics, no fonts from the video path, and makes no requests after it has loaded. Close the tab or press camera off and the stream stops. The source is in the open, so you do not have to take our word for it.
One exception, and it is opt-in: the person matte runs a segmentation model (MediaPipe selfie segmentation, Apache-2.0) in your browser. Picking it fetches the model and its runtime, about 10 MB, from this site's own origin, once. No third-party server is contacted, the model runs entirely in the tab, and the camera feed still goes nowhere. Until you pick it, nothing of it is even downloaded.
Sound react is its own, second opt-in. The microphone is never requested together with the camera: the page asks for it only when you press A or the sound button, as a separate permission you can decline on its own. The audio is reduced to a few loudness numbers by an analyser inside this tab, drives the picture, and is discarded; it is never recorded, never sent anywhere, and turning sound react on or off makes no network request of any kind. Press A again, or close the tab, and the microphone stops. If you decline, sound react simply stays off and everything else keeps working.