DRAFT 0.1 · UNSTABLE

SPEC

THE NORMATIVE TEXT LIVES IN spec/

Anything may change before 1.0. Each file below is the source of truth for its chapter; this page is the map.

CORE DECISIONS · V0.1
  • PLUGINone JSON manifest + one or more WGSL shaders
  • KINDSeffect (1 input) · transition (2 inputs + progress 0..1)
  • SPACElinear, premultiplied RGBA, rgba16float
  • PASSESpipeline-overridable constants (override), set per pass in the manifest
  • SIGNALSMIDI 2.0 controllers and notes, one 0..1 float per signal per frame; the host maps audio, OSC and hardware onto them
  • HOSTSidentical on native wgpu and browser WebGPU
FILES
01 / MANIFEST

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.

02 / SCHEMA

manifest.schema.json

Draft 2020-12 JSON Schema for manifest.json, published at gobofx.org/schema/0.1/manifest.json. Validate before shipping.

03 / ABI

shader-abi.md

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.

04 / SIGNALS

signals.md

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.

05 / PRELUDE

prelude.wgsl

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.

06 / PACKAGE

package.md

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.

07 / EXAMPLES

examples/

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.

CONFORMANCE

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.