Skip to content
Chromatic Coherence

Hue draws · Priority three

Worlds grown live, one draw call at a time.

The same maths as Hue Charts, one size up — ten thousand birds in a single draw call, coasts, reefs and skies grown live in the browser, with nothing underneath but WebGL2.

Zero dependencies@hue/engine· not yet on npmSee the recipesEngine API

What it does

SCALE

Ten thousand in one draw call

Flocks, coasts and reefs are instanced and grown at once, rather than assembled object by object.

GROW

Grown live, not loaded

Skies, water and terrain are computed as you watch, in the browser, with nothing underneath but WebGL2.

01

No models, no textures, no pipeline

There is nothing to author in another tool and nothing to ship alongside. A coast, a reef or a sky is computed from a handful of parameters, so the world weighs what the code weighs.

02

Nothing underneath but WebGL2

Zero dependencies and no engine riding along. Nothing to keep in step with a framework upgrade, and nothing sitting between your scene and the GPU.

03

Scale is a number you change

Flocks, forests and reefs are instanced, so ten thousand of a thing costs what ten of it costs. Growing a scene is not a rewrite — it is a larger number.

What it computes

Geometry, light, water, weather, plants, creatures and the people among them, computed at run time from first principles. Each of the modules below is a body of maths in its own right — wave spectra, cloud optics, body proportions, gait, turf — and the surface is read from the package's own compiled types rather than described.

39 modules · 961 exported symbols

Modules and their exported symbols, counted from the package the TypeScript checker sees. Where the authors wrote a line about a module, it is theirs.

What is not underneath it

A world is grown, not loaded. There is no asset pipeline because there are no assets — no models, no textures, no atlases and nothing to download at run time — and nothing sits between the package and the browser's own graphics context.

Dependencies
0
Peer dependencies
0

Swept for every call form that would load, fetch or decode something, across the source and the shipped build alike. The detector is shown firing elsewhere in this repository before its zero here is reported.

Matched in prose, not in code

fetch(

These matches are the word fetch in the sense the sea uses it — the distance wind blows over open water — written in a note about wave physics. A call form written in a comment is a word match and not a finding, so the sweep counts the two apart and neither of them is a hit against the figures above.

The sweep, shown working before its zero is read

The same 13 call forms fired on 24 of the 466 other files in this repository, so the zeros above come from a detector that finds something when there is something to find. 10 of the 13 are proven live that way.

The other 3 appear nowhere in this repository at all, so their zero rests on a form that has never had the chance to fire. They are named here rather than counted as proof.

loadTextureatob(fromCharCode

How it reaches the screen

  • It requires WebGL2

    The engine asks the browser for a WebGL2 context and draws through it. There is no second renderer inside the package and nothing else between it and the graphics driver.

  • It says so when there is no context

    Where the browser will not give one, the engine raises rather than drawing something else. What to show instead is your decision, made in your own code.

There is no fallback inside the package. It asks for a context, and where there is none it says so — the caller falls back, not the engine.

The scale

10,000 birds.

One flock, one draw call — the same mechanism that grows a chart from a seed, one size up.

And what it buys you

A scene is never a static export sitting on your page — it is live, and it can be handed new parameters and asked to regrow itself the moment they change.

What it costs

Free. Then £100 a year once your organisation is over 25 people, or over £100,000 in annual turnover.

Install it and it runs on your own machines, against the GPU they already have. Nothing is metered and no call leaves your network.