Introduction to FxPacks

Professional video applications, with the notable exception of Final Cut Pro, directly support native visual effects plug-ins. Motion supports plug-ins based on the FxPlug SDK, whereas After Effects and Premiere Pro support plug-ins based on the After Effects SDK. Native plug-ins can be made available inside Final Cut Pro through Motion Templates.

FxFactory provides an elegant alternative to coding each plug-in from scratch: you can quickly develop visual effects plug-ins whose functionality is implemented via compositions created through FxCore, our own node-based compositing engine.

FxFactory provides the development environment where plug-ins can be easily created and configured, whereas FxCore provides the necessary runtime to process video frames. Tight integration between FxFactory and FxCore allows plug-ins to delegate most of their rendering tasks to the composition.

Plug-ins are created, stored and distributed inside an FxPack, a special document format based on file packages. This is a file-system entity specific to the Mac, appearing in the Finder as a single file but stored on disk through a directory. Within this directory, FxPacks store compositions, assets and other metadata required by your product. FxPacks are one of many document types that are recognized by FxFactory.

Commercial vs Editable FxPacks

FxPacks – or packs, for short – are available in two kinds: commercial and editable. Products are distributed to end users through commercial plug-in packs. Commercial packs cannot be inspected or modified by users.

On the other hand, any FxFactory user can begin creating their own editable plug-in pack by selecting the NewPlug-Ins command under the File menu:

Creating a new FxPack

Creating a new FxPack

Development UI

When you open an editable pack, its plug-in development interface appears:

FxPack window

FxPack window

The default toolbar buttons let you:

  • Create a new plug-in from scratch, or from an existing composition.
  • Organize assets that are stored inside the FxPack (e.g. image files, HTML documentation, PDFs)
  • Set its system requirements (e.g. what version of the operating system is required to run the plug-ins)

On the left-hand side of the window, you will find the Groups and Plug-ins view. The plug-ins you see under these listings will appear under the same group and with the same name in all supported hosts:

Groups and plug-ins within the pack

Groups and plug-ins within the pack

The above example displays the group and plug-ins contained by Light Show. You can organize plug-ins any way you like by assigning new group and/or plug-in names. You can move plug-ins from one group to another via drag and drop.

Plug-ins may be disabled via the checkbox control that appears next to their name. This is a finer control than the one given by the plug-in management window, since it lets you disable only certain plug-ins within an FxPack.

On the right-hand side of the window, you can find the most important options available for plug-in development. All plug-ins are based on a composition, a powerful node-based representation of the plug-in rendering process. Older versions of FxFactory used Quartz Composer, an app provided by Apple. More recent versions rely on FxCore, our own Metal-based compositing engine.

Edit the underlying composition via FxCore

Edit the underlying composition via FxCore

  • The Edit in FxCore button lets you edit the composition used by the plug-in using either Quartz Composer or FxCore.
  • The Import button lets you choose a new composition file to be used by the plug-in.
  • The Export button lets you save the composition used by the plug-in back to a file.

Clicking on the icon next to the title of your plug-in lets you select one of three effect types: generator, filter and transition, defined as follows:

  • Choose generator if the composition creates an output image but doesn't necessarily require a default image input. This effect type corresponds to a plug-in that may be dragged to any empty area of the timeline. Generators are supported natively by Final Cut Pro and Motion.
  • Choose filter if the composition excepts at least one default image input and generates an output image derived from that input. This effect type corresponds to a plug-in that may only be dragged over an existing clip on your timeline. Filters are available in Final Cut Pro and Motion under the generic name of effects. Filters are the only type of plug-in supported by After Effect.
  • Choose transition if the composition is designed to take two image inputs and transition from the first image to the next according to an implicit progress value defined by the host (0% to 100%). This effect type naturally corresponds to transitions in editing apps, i.e. plug-ins that may be applied in between two clips, or at the head/tail of an existing clip. Transitions are not supported natively by Motion or After Effects, but FxFactory makese these effects available in those apps by advertising your plug-in as a filter with an auxiliary image input designed to accept the incoming clip.
All other options are accessed via tabbed views:

Different sections to configure your plug-in

Different sections to configure your plug-in

Each section is covered separately (coming soon):

  • Info
  • Renderer
  • Inputs
  • Output
  • Parameters

Input Mappings

FxFactory communicates information to the underlying composition through input mappings. The most obvious mappings are those that link each parameter available in the inspector to an input port in the composition. When the user changes a parameter, such as moving a slider to set the radius of a blur to 10px, the value 10 is fed to the composition when asked to render a new video frame. The host application automatically renders a new frame whenever the user changes a parameter in the inspector.

Many options in FxFactory thus require you to map parameters or environment settings to an input port published by the composition. If this mapping is not established, the plug-in will not function correctly inside the host. Each published port in the composition can be mapped only once inside the plug-in.

Existing mappings can be undone by selecting the first menu item in the corresponding popup menu, marked by the symbol.