manifest.md
Top-level fields (gobofx, id, name, kind, category, version, license), the params table with its WGSL mapping, and the passes table: shader, entry, constants, inputs and output. Reserved input names source, from and to.
Anything may change before 1.0. Each file below is the source of truth for its chapter; this page is the map.
Top-level fields (gobofx, id, name, kind, category, version, license), the params table with its WGSL mapping, and the passes table: shader, entry, constants, inputs and output. Reserved input names source, from and to.
Draft 2020-12 JSON Schema for manifest.json, published at gobofx.org/schema/0.1/manifest.json. Validate before shipping.
Module assembly (prelude plus plugin file), the five host bindings, the fragment entry point, the colour space (linear, premultiplied RGBA, rgba16float, Rec. 709) and the portability rules.
MIDI 2.0 controllers, notes, note ranges (gate, velocity, latched pitch, per-note pressure), pitch bend and channel pressure, read each frame as 0..1 floats at group 1, binding 1. The host maps audio followers, OSC and hardware onto them; the plugin never sees events.
The WGSL the host prepends to every plugin shader module: GobofxGlobals, the sampler, the two input textures and the fullscreen-triangle vertex stage gobofx_vs. Plugins must not redeclare anything in it.
The .gobofx distribution format: a ZIP of the plugin folder under a strict profile. manifest.json first and stored, deflate or stored only, canonical relative names, no Zip64 or encryption. Any license, open or commercial.
Cross Dissolve (transition), Gaussian Blur (two passes with override constants) and Reactive Grade (notes C1, D1, E1 saturate, flash and punch), Chromatic Hue (every key of an octave is a hue; pitch wheel and aftertouch) and Kaleidoscope (the key picks the segment count, mod wheel spins, pitch wheel zooms). All pass naga and validate against the schema.
A conforming host assembles each pass's module as the prelude plus the plugin's WGSL file, creates explicit pipeline layouts so unused bindings stay valid, provides the five bindings of group 0 and the plugin's Params at group 1, lays Params out with WGSL uniform alignment padded to 16 bytes, feeds linear premultiplied rgba16float in and out, drives progress across the clip or the cut, and accepts only WGSL that both naga and browser WebGPU compile.