Skip to content

Releases: stoatworks-labs/jacquard

Release list

v0.1.1

Choose a tag to compare

@github-actions github-actions released this 26 Sep 00:14

What's Changed

  • Bump actions/checkout from 4 to 7 by @dependabot[bot] in #1
  • Bump actions/download-artifact from 4 to 8 by @dependabot[bot] in #2
  • Bump actions/upload-artifact from 4 to 7 by @dependabot[bot] in #3

New Contributors

Full Changelog: v0.1.0...v0.1.1

v0.1.0

Choose a tag to compare

@github-actions github-actions released this 25 Sep 16:30

The clip woven on a jacquard loom, as an FFGL effect for Resolume Arena and Avenue, shown as SW Jacquard. The plugin weaves the picture under the loom's own constraints, not as a texture laid over it. One warp colour runs down; each pick across carries one weft colour from the shuttles loaded (2 to 8, dyed from the clip by k-means, or fixed dye sets); no thread may float past Max Float crossings, warp or weft, on either face; and tone is carried by weave structure, twill in the midtones and satin near the ends of the range. The clip is reduced on the GPU to one mean per crossing and read back, and the loom weaves pick by pick, top to bottom, choosing each pick's shuttle and lift pattern with a row programme that is exactly optimal under both float limits, and carrying the error to the next pick. Each crossing is drawn as its lit top thread, and Zoom goes from the picture to the cloth.

What falls out: colour in horizontal bands, because a pick is one colour across the whole width; ties sprinkled through the solids; the twill's diagonal; and a picture from across the room that is thread up close.

What is verified

By tools/verify.sh on an M4 Max, macOS 26.4, on 2026-09-25, at two rasters (320×180 and 1280×720), and again on Apple's software renderer (the one CI's runners fall back to):

  • Optimal. 960 woven picks (60 random cloths and a remembering second frame of each, 4–13 ends, 2–8 shuttles, Max Float 2–6, every structure mode) and 200 arbitrary integer tables: every one costs exactly what an exhaustive search over every shuttle and every pattern finds.
  • Floats. 48 cloths, counted on the grid and read back from the picture: no warp or weft float past Max Float.
  • Coverage. Each of eight structures, forced over a flat field, shows exactly its weft ratio over 3,600 crossings (1/5, 1/4, 1/3, 1/2, 1/2, 2/3, 3/4, 4/5).
  • Twill. The diagonal at exactly one end across per pick down: 45°, 63.43° at Thread Aspect 2, 26.57° at 0.5.
  • Shuttle. 0 crossings off the grid's colour, 0 picks with two wefts, 0 off the shuttles.
  • Distance. From a distance the cloth's error is 0.53–0.58 of the best single colour's.
  • Resize keeps the shuttles bit for bit and the loom's memory; alpha: the cloth is opaque at Mix 1 and the clip byte for byte at Mix 0.
  • Eight perturbed models each fail their check; a one-character mutation of the shipped shader is caught by five checks. All 13 controls change the picture; oxbow loads it as SW Jacquard / JQ01 / effect and renders 120 frames.
  • Render cost: about 2.0 ms a frame at the defaults (1.3 ms of it the CPU loom) and 5.6–6.9 ms at the largest grid (320 × 180 crossings), macOS.
  • Windows, in Resolume Arena 7.27.1 (win-lab, Mesa llvmpipe, no GPU): the DLL release.yml built loads, registers as SW Jacquard / JQ01 / effect, all 19 host controls match the declaration, it renders, Arena's log stays clean, and all 14 valued controls move the picture: 9 of the fleet gate's 9 checks. The gate's picture is a still, so it says nothing about how the cloth moves; software rendering says nothing about a GPU or speed.

What is not

  • Each pick is exact given the picks above it; the cloth is not a two-dimensional optimum. Weaving is greedy between picks, so two saturated hues side by side weave as an uneven alternation. One weft a pick: no brocade or lampas mode.
  • Filming the release video found three facts, now in the guide. Plain weave on a grey clip loses the picture entirely (a pick is one shuttle and every crossing the same weave). Over a black ground crossed by a bright pick, the ties line up into short vertical dashes rather than a satin scatter; it happens on a single frame, so it is the per-pick weave, not the memory. And on moving footage the cloth, rewoven every frame with a memory of the last, changed on 1.5–28% of pixels a frame on the demo clips, less than the clip on most but twice as much on Cyberspace's fine bright lines; a held still changes on none.
  • Never loaded into Resolume on macOS. Footage has been seen only through the harness's --pipe, on Resolume's bundled demo clips. The cost constants, the fixed dyes and the thread shading are chosen, not derived; the look is judged by eye. No presets, no OpenFX port.

There is a user guide at https://stoatworks-labs.com/software/jacquard/guide/ and a browser demo at https://jacquard-demo.stoatworks-labs.com/ (a port to a web page, not the plugin: the shaders are the plugin's own in WebGL2, and the CPU half — the k-means and the loom's row programme — is a hand port to JavaScript that only a reader checks). Video: https://www.youtube.com/watch?v=oaUX1lY2bRA

The macOS build is universal and Developer ID-signed and notarised: the downloaded .dmg and the bundle inside the .zip both read Notarized Developer ID. The Windows build is unsigned, so SmartScreen warns once.