# Stages

A stage is a scene that draws the SONG's content rather than its own.

An ordinary scene under `shader/` is self-contained: it knows how to make
metaballs, and the personality can only modify an image it already had. That is
why most of the library quietly ignores `u_sigSides` — the uniform is a hint,
and a hint costs nothing to skip.

A stage has no image of its own. It knows how to arrange, place and animate
things, and what those things ARE comes from the track's identity: `castMain`
and `castChorus` for the forms, `inkMask` and `inkValue` for the hand they are
drawn in. See `look/Identity.js` and EPIC-3.md.

The test of whether a file belongs here, from EPIC-3.md §2:

> An artifact is content a stage could not have invented for itself.

If it renders acceptably with a default cast, it is using the cast as a
modifier, and it belongs under `shader/` instead.

Stages declare `consumes` so the harness — and eventually the casting code — can
tell the two kinds apart.
