obs-ffgl
FFGL plugins natively inside OBS

What it does
OBS can't load FFGL plugins, and the usual way round that is a trip across the network: send a source out over NDI, run the effect somewhere else and bring it back. obs-ffgl saves you the trip. It loads any FFGL 2.x bundle and renders it inside OBS's own OpenGL context, so there's 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 change a picture. FFGL Source is an input, for plugins that make one, so a generator is a source in its own right instead of a filter perched on a throwaway picture. Every parameter the plugin declares shows up in OBS's own properties, in the plugin's groups and order, with proper dropdowns.
The FFGL host underneath is oxbow's, compiled from a submodule rather than copied in, so there's only 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
Released at v0.1.2, which is documentation and packaging only; the plugin itself is v0.1.1's. Early, and macOS only. FFGL is an OpenGL format, so the module registers nothing unless OBS is on its OpenGL renderer, rather than handing you black. Of 22 FFGL bundles driven through a real OBS and compared pixel by pixel, 17 render correctly. Two need a file parameter set, two fail the same way under oxbow (so those bugs are the plugins' own), and one is a shell that correctly refuses.
Watch it running
Nothing loads from YouTube until you press play.Watch it there instead