Quartz Composer

Quartz Composer is part of the Apple developer tools package (http://developer.apple.com/tools/xcode/). This document assumes you have basic knowledge of Quartz Composer.

Compositions should follow one of the supported protocols.

The overlay protocol:

If a composition wants to overlay on the video stream, simply render whatever you want in the composition.

The image filter protocol:

As of CamTwist 2.0, CamTwist supports the standard QC Image Filter protocol.  At a minimum you must publish and input image called "_protocolInput_Image" and and output image called "_protocolOutput_Image".  Whatever happens in between is up to you.  CamTwist also supports the "_protocolInput_PreviewMode" key which you can use to detect being in CamTwist Studio preview mode.

Supported Published Inputs:

Most of the published inputs will show up in the CamTwist settings panel automatically except anything published with a name starting with an underscore.

  • Strings
    • Anything called "Font_Name" is assumed to be a font and presents as a font picker.
  • Numbers
    • For the same of simplicity for the end user, Number inputs that have a min and max are shown as sliders.
    • Numbers called "X_Position" or "Y_Position" are assumed to be vec2 positions and are bounded at [-1, 1].
    • If you have both X_Position and Y_Position, CamTwist will show the draggable "dot".
    • If you need more than 1 draggable dot you can add a prefix to the pairs, for example: "Foo_X_Position", "Foo_Y_Position".
    • Other numbers are shown as text fields.
  • Colors
  • Fonts
  • Images
  • Booleans
  • Indexes (enumeration type)

If you create any cool effects, please send them to me so I can include them in the next release.

Installation of effects

Effects can be placed in the Effects folder that comes with CamTwist, or ~/Library/Application Support/CamTwist/Effects.