Stoatworks Labs

Resolume OFX Bridge

OpenFX plugins in Resolume

Releasedv0.5.1Plugin & ModuleC++
Resolume OFX Bridge — OpenFX plugins in Resolume
The OpenFX Invert example before and after, written straight out of the generated plugin's own framebuffer by its test harness — not a Resolume screen capture.

What it does

An OpenFX host packaged as an FFGL plugin, so effects written for DaVinci Resolve and the rest of the OFX ecosystem can be dropped onto a Resolume clip. It is built on the OpenFX project's own host-support library, and it presents each plugin's parameters with their real names, units, ranges and group headings rather than a row of anonymous sliders.

The obvious design — one "OFX Host" effect with a dropdown of your installed plugins — is not expressible in FFGL. A parameter's type, range and default are fixed when the plugin loads; only labels and visibility can change afterwards. So the generator instead emits one bundle per plugin, each a copy of the same prebuilt binary plus a JSON manifest it reads at load time. That means you generate your effects without a compiler, and every parameter survives exactly as its author declared it.

Alongside the generator are the tools used to prove the pixel path: ofxprobe dumps a plugin's parameters and pushes a frame through it on the CPU, and ffgltest drives a generated bundle through a real offscreen OpenGL context — the only way to exercise the render path without Resolume itself.

There are two front ends and one implementation behind them: OFX Bridge.app, which is two paths and a Start button, and the ofxgen command line. Both call the same generator, so what ends up in a plugin cannot depend on which one you used.

  • OFX Bridge.app — choose a folder of plugins (or one .ofx.bundle), choose where they go, press Start; a progress bar and the generator's own log, with a one-click destination for Resolume's Extra Effects folder
  • GPU rendering where the plugin offers it: OFX Metal is 5.4× faster than the CPU path at 1080p and is what makes GPU-only plugins work at all, with OpenGL and OpenCL paths as well
  • macOS quarantine cleared as plugins are written — Resolume skips a quarantined plugin silently rather than reporting it
  • ofxgen generate — scan the conventional OFX locations, or a folder you name, and write one FFGL bundle per usable plugin
  • ofxgen list and ofxgen verify — show what was found and why anything was skipped, then load a generated bundle as a host would and print what it advertises
  • Parameter mapping that preserves OFX types, display ranges, group headings, colour-component tagging and choice order
  • ofxprobe for CPU renders and ffgltest for a real OpenGL context, so the render path can be checked without a host
  • A script that builds a corpus of real OFX plugins from the OpenFX examples — necessary because a clean machine has none, even with Resolve installed

Where it stands

Released at v0.5.1 as a working prototype. The host, the parameter mapping and the pixel path are verified against real OFX plugins by automated harnesses in the repo, including a headless OpenGL test that drives a generated bundle exactly as a host would and pixel assertions on the CPU, Metal and OpenCL paths — but it has never been loaded into Resolume itself, so Resolume's real texture sizes, premultiplication and resize behaviour are unconfirmed. The release ships a macOS universal build only; the Windows and Linux code paths exist but have never been compiled. The CUDA path is written from the specification and has never been compiled or run, so the host declines CUDA plugins rather than half-running them. Only the OFX Filter context is hosted, and licensed commercial plugins will mostly refuse to load, because the bridge identifies itself honestly as its own host rather than spoofing one they recognise.

Watch it running

Resolume OFX Bridge video thumbnail

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