Stoatworks Labs

Radar

A plan-position radar scope, for Resolume

Betav0.1.0Plugin & ModuleC++ / GLSL
Radar — A plan-position radar scope, for Resolume
No screenshot — this one is configuration inside another application.

What it does

Two FFGL plugins for Resolume Arena and Avenue in one download: SW Radar, a source that is a radar watching a synthetic sea (a coastline, rain cells and moving contacts), and SW Radar Over, an effect that makes your clip the sea, so its bright parts become echoes painted by the sweep.

The one idea: a radar scope does not show the sea, it shows the sea convolved with the radar. The antenna turns at its RPM and every frame paints exactly the bearings it swept past into a fixed polar grid of 2048 bearings by 1024 ranges. A point target paints an arc as wide as the beam and a radial streak c tau / 2 long (150 m per microsecond of pulse), outward from its range. Returns fall as the fourth power of range, and sensitivity time control (STC) turns the gain up with range until the scope is flat.

The phosphor is two components, after the P7 radar tube: a short blue-white flash at the sweep's leading edge and a long yellow-green afterglow, with P19 orange and a green tube as options. The decay is timed per bearing on the CPU in double precision, so it is exact at any frame rate and the GPU touches only the wedge the antenna just swept.

What falls out rather than being drawn: far ships are wide arcs and near ones short, the trail is brightest just behind the sweep, sea clutter crowds the centre, rain drifts as speckled cells, a coast facing the radar is a bright edge with the land behind it in shadow, and moving contacts leave a plot of their track in their fading paints. Audio onsets can fire interference spokes and, in the source, sudden contacts ahead of the sweep.

  • A source (a synthetic sea) and an Over effect (the clip is the sea) in one download
  • Every bearing painted exactly once a rotation at any frame rate: the swept wedge, not a line per frame
  • Point targets paint arcs as wide as the two-way beam and streaks c tau / 2 long, with an optional sidelobe pattern
  • The radar equation's R to the minus four, with STC from off to flat
  • A two-component phosphor (P7 blue-white flash and yellow-green afterglow, P19, green) with the decay exact in double precision
  • Sea clutter, rain, noise, coast shadow and moving contacts in the source; the clip's brightest channel as reflectivity in the Over
  • Audio onsets as interference spokes and sudden contacts
  • Universal macOS bundles and Windows x64 DLLs

Where it stands

v0.1.0, and honestly early. The scope is measured, not asserted, by an offline harness that drives the real plugin classes headlessly: a point target's arc is Beamwidth wide to 0.004 degrees, its streak is c tau / 2 to 8e-5 of a range bin, every bearing is painted exactly once a rotation at whole, fractional and jittered frame rates, equal targets fall with slope -3.9998 against R to the minus four and flat with STC at n = 4, and the phosphor holds its two-term decay to 2e-7. Eleven deliberately wrong models each fail their check, and one-character mutations of the shipped shaders are caught; all 43 parameters change the picture. It has not yet been loaded into Resolume on macOS. On Windows it has: both plugins load, register and render in Resolume Arena 7.27.1 on software rendering (win-lab, no GPU, no sound device) with every parameter as declared; the turning sweep keeps the gate's noise floor high, so about half the controls read inconclusive there, none dead. The phosphor's time constants are stretched to video rates (a real P7's afterglow decays as a power law, this one as an exponential), land and clutter blur with beam and pulse rather than brightening, and the synthetic sea is made to look right, not measured. The macOS build is Developer ID-signed and notarised. There is a user guide and a browser demo; no presets and no OpenFX port. Check it in your own rig before trusting it in a show.

Watch it running

Radar video thumbnail

Nothing loads from YouTube until you press play.Watch it there instead