Who it's for
If you have ever taped a piece of paper to a wall to find the edge of a projection, or given up and pointed the projector at a flat screen instead, this is for that.
A projector throws a rectangle. Almost nothing worth projecting onto is a rectangle - a set piece, a brick wall, a column, a shop window, three panels at different angles. Mapping is the business of bending the picture until it lands on the thing instead of over it, and then running a show from there.
SurfaceCast does that bending on your desktop, live, against the real surface, with the projector on the whole time. You drag the corners of a layer until it sits on the panel; if the panel is curved, you pull a grid of points until it follows the curve.
These are the shapes of show it was built around. They are not case studies - they are the situations the design keeps having to survive.
A band backdrop built from panels or flats, one projector on a truss, and a set list that means scene changes on cue. The scene strip and the queue-then-take rule exist for exactly this.
A stage that is a different shape every season, run by whoever is free on the night. A show file saves the whole rig, so the person operating it does not have to be the person who aligned it.
Scenery that changes between acts, on a budget with no lighting desk. Scenes carry their own cross-fade times, and the show timer can advance them by itself for a rehearsal.
Something that has to come up on its own and run unattended for months. Autosave, a log that records what actually happened, and a projector window that says so rather than going black when nothing is live.
An awkward frame, a laptop behind the display, and nobody on site to fix it. The portable build writes nothing outside its own folder.
It costs nothing and the alignment grid is there before you own any content - you can aim a surface with an empty scene and see whether the idea works at all.
Windows 10 or 11, 64-bit. The console fits 1280×800, so a Surface Pro on a cramped table is enough. No special graphics card - the warping is done on the CPU, which is why it is honest about what it costs.
Any projector. SurfaceCast drives one output; the console lives on the laptop screen and the picture fills the projector edge to edge.
Flat, angled, curved or several of those. If it is a plain screen you do not need mapping at all, and that is a fine reason not to use this.
Optional: a phone on the same network to run the show from the room, and WLED or DMX lights if you want the practicals to follow the picture. Both are off until you turn them on.
There is a lot of projection software, and most of it is one of two things. At one end, full media servers and commercial mappers: enormously capable, priced accordingly, and with a week of learning in front of you. At the other, a presentation program pointed at a projector, which cannot bend a picture at all.
SurfaceCast is deliberately the middle: proper corner pin and mesh warping, a real preview-and-program switcher, and little enough of everything else that you can learn it in an evening. If you outgrow it, the scenes are plain JSON and the source is yours.
There is nothing to sign up for, no licence key, no activation, and nothing is sent anywhere. It does not need the internet to run at all.
The only network traffic it can make is the phone remote and the lights, both off by default, both pointed at addresses you choose. That is not a policy - it is the whole of what the code does, and you can read it.
Said plainly, because finding out at 19:55 is worse.
There is no edge blending and no multi-output. Two projectors overlapping on one surface is a different program.
Scenes are cued by hand or by a per-scene timer. If you need audio-locked playback to a timecode, this is not that.
SurfaceCast sends DMX to lights; nothing drives it over MIDI, OSC or DMX. It is operated by a person, at a desk or on a phone.
Mesh warping is CPU work, good for one 1080p layer. The measurements are published rather than promised, so you can check before you commit.
SurfaceCast is built by Dispatch Dataworks and published under the GNU General Public License v3 or later. That is a deliberate choice rather than a default: anyone you hand a build to gets the source and the same freedom to change it, and a venue that comes to depend on it cannot have it taken away.
One caveat about this page: the list above is where we think SurfaceCast fits, not a record of places it has run. If you used it somewhere that is not on it, tell us - this page should be written from what people did with it rather than from what we expected.