Skip to content

Releases

Pumpkin v0.1.0

Choose a tag to compare

@github-actions github-actions released this 27 Oct 22:41

The first release of Pumpkin: the Test Card's pumpkin patch for Resolume Arena and Avenue, as an FFGL source. SW Pumpkin (PK01) puts a jack-o'-lantern on every LED tile, each carved with one of six faces (classic, fierce, happy, surprised, sly with fangs, and goofy), its candle flickering and its face blinking, winking, chomping, squinting or gasping in its own time.

The one idea: not a pumpkin like the test card's, the test card's pumpkin. The lantern, its faces and their expressions, the candle flicker, which face goes on which tile and each tile's night are the test card's TypeScript, ported line for line, and the harness checks the port against the test card itself rather than against anyone's memory of a pumpkin. So 168-pixel tiles and Seed 1 here are 168-pixel tiles and Seed 1 there (on a spanned surface), and with Clock set to Wall the plugin keeps the test card's own live time, so a pumpkin in Resolume flickers in step with the same pumpkin on a test card output on machines whose clocks agree.

Controls: Tile Width, Tile Height, Origin X, Origin Y and Seed; a tick for each of the six faces (untick them all for plain, uncarved pumpkins); Flicker, Expressions, Speed and Clock (Resolume or Wall); Background (Night, each tile its own night as on the test card; Dark, one colour with the glows running on across the tiles' edges, so the grid disappears; None, transparent, to lay over a clip).

Downloads: a universal macOS build (Apple silicon and Intel) as a .dmg or .zip, and a Windows x64 installer (-setup.exe) or .zip. The macOS build is Developer ID-signed and notarised minutes after publication; if macOS refuses a download, it's from before that, so download it again. The Windows build isn't signed, so SmartScreen warns once.

What is measured (offline, by tools/verify.sh on an Apple M4 Max under macOS 26, driving the plugin's own class in a headless GL context, on the GPU and again on Apple's software renderer):

  • Against the test card's numbers. Its own TypeScript, run for the purpose, prints its hashes, the face on 450 tiles over five seeds and three grids, its candles and blinks at times out to ten years of running, and every point of every face at four stages of its expression. The port agrees with all of it: the hashes and faces exactly, the rest to 1e-16. (It took switching off the compiler's fused multiply-add: one rounding where JavaScript makes two put the candles a ten-millionth out after ten years.)
  • Against the test card's pictures. Its own painter, run in Chrome, drew seven reference pictures from 320×180 to 1280×720; the plugin's are a mean of 0.24 to 0.81 code values from them, the bigger differences on edges, where no two renderers agree, and flat areas within 4 code values bar one pixel in 100,000.
  • The drawing. Every face's movement is linear, which is what lets the shader store each point twice and mix; the shader's ellipses and flattened curves are within 0.1 px of the curves the canvas draws, for a pumpkin 4096 px wide.
  • The plugin. Each tile's night by column and row; the patch unchanged when the grid moves a whole tile; Resolume's clock at 499 million milliseconds kept in double, Speed, scrubs and the Wall clock; steady candles and still faces don't move; on Dark and None no edge where tiles meet; a resized instance paints what a fresh one would.
  • The checks can fail. Fourteen deliberately wrong models each fail their check, and eight one-character mutants of the shipped GLSL and C++ are all caught. All 16 controls change the picture. The bundle is universal, and oxbow sees SW Pumpkin / PK01 / source and renders through it.

On Windows it has been in Resolume. The fleet's Arena gate ran CI's build of the release code in Arena 7.27.1 on win-lab (software rendering, no GPU): the DLL loads, SW Pumpkin registers as PK01, a source, and appears in Arena's list, its 21 controls match their names, order, types, ranges and defaults, it renders, and Arena's log stays clean: 9 passed, 0 failed. Against stills, 14 of its 16 controls changed the picture; Clock and Expressions act on a moving picture, so a still can't show them. Software rendering says nothing about a GPU or about speed.

On macOS it's never been loaded into Resolume; the fleet's test host, oxbow, is the only host it's run in there.

Found before release, and fixed. Writing the user guide meant rendering every claim in it: the glow, clipped at each tile as the test card clips it, left a faint square round every carved tile on Background None and a step at the tile edges on Dark. On those two backgrounds the neighbours' glows now run on across the edges (Night is unchanged, and still the test card's), and a check holds it. It also found three README claims that were wrong, about which tiles change when a face is unticked, how often the faces move, and whether Dark hides the grid.

What isn't verified, or is a limit. Uniform tiles only: the test card's imported cabinet maps aren't here. The patch matches the test card's on a span; an unspanned test card output deals its own. On None a carved patch tints the whole clip a little (plain pumpkins don't), and there's no control for how strongly the candles glow. No beat sync.

Cost: median frame on an Apple M4 Max at the default 168-pixel tiles: 0.44 ms at 720p, 0.64 ms at 1080p, 1.6 ms at 4K; about 10 ms at 4K at the smallest 16-pixel tiles, which is 32,400 pumpkins. Nothing was timed inside Resolume.

Not done. No presets, no browser demo and no OpenFX port.