obs-ffgl
FFGL plugins natively inside OBS

What it does
OBS cannot load FFGL plugins, and the usual way round that is a network round trip: send a source out over NDI, run the effect somewhere else, bring it back. obs-ffgl removes the trip. It loads any FFGL 2.x bundle and renders it inside OBS's own OpenGL context, so there is no second render, no copy back over the network and no extra frame of latency.
It registers two things. FFGL Effect is a filter, for plugins that transform a picture. FFGL Source is an input, for plugins that generate one — so a generator is a source in its own right rather than a filter sitting on a throwaway picture. Every parameter the plugin declares appears in OBS's own properties, in the plugin's groups and order, with real dropdowns.
The FFGL host underneath is oxbow's, compiled from a submodule rather than copied, so there is exactly one implementation of the format across both projects.
- Any FFGL 2.x plugin, not only ours — nothing is hard-coded
- Renders in OBS's own GL context: no round trip, no readback
- Filter and source forms, with the source list filtered to real generators
- Parameter groups and dropdowns taken from the plugin itself
- Finds plugins where Resolume already keeps them
Where it stands
Early, and macOS only — FFGL is an OpenGL format, so the module registers nothing unless OBS is on its OpenGL renderer rather than producing black. Of 22 FFGL bundles driven through a real OBS and compared per pixel, 17 render correctly; two need a file parameter set, two fail identically under oxbow so are the plugins' own bugs, and one is a shell that correctly refuses.
Watch it running
Nothing loads from YouTube until you press play.Watch it there instead