Colour perception · OFX · Resolve · Fusion · Nuke
Now you can prove it on the timeline.
Color Theory generates the classic colour vision illusions procedurally, in your host, at any resolution. Every mode comes with a burned in commentary overlay that tells you what you are looking at, a Reveal slider that wipes the surround away so the trick collapses, and a Simulate Appearance mode that draws what your eye reports instead of what the numbers say.
Both centre patches carry the identical code value. Drag Reveal and the surround dissolves to neutral grey, so you can watch the difference you were sure you saw disappear.
What it is
Color Theory is a free OFX plugin that draws colour vision demonstrations procedurally on the GPU. Nothing is a bitmap, so every figure is crisp at any timeline resolution, animates cleanly, and can be pushed through your own transforms to see how they survive.
Fourteen of the modes generate their own image. Three run on whatever footage you feed the node, so you can show what a histogram move or a reduced palette really does to a picture. Two more lay down test charts, a grey reference card and an RGB chip chart, for checking a pipeline end to end.
Two of the rings are filled with exactly the same grey, one under the warm spokes and one under the cool ones. Each ring drifts toward the stripes crossing it, so the inner one reads warm and the outer one reads cool. Drag Reveal and they snap back together.
The three controls that matter
Every mode shares the same three tools, so once you learn one demonstration you can drive all of them.
Mode list
Pick a group, pick a mode, then drive the parameters. Every figure exposes its own controls, so you can set up the exact version you want to teach from.
These draw their own image, so you can drop the node on any clip or a solid and it takes over the frame.
Two identical patches read light or dark depending on the surround they sit in.
A surround pushes a patch to look more saturated than the values it actually holds.
A side by side stimulus that separates a contrast shift from an expansion shift.
Overlaid stripes drag a single background colour toward the stripe hue.
A patch that reads as a sheet of coloured film laid over the image beneath.
A rotating wedge figure where the same values flip between layer and surface.
Lower local contrast alone is enough to make a region read as veiled.
Stripe geometry over a field, where the crossing pattern rewrites the colour you report.
A cast shadow on a checkerboard makes two identical squares look nothing alike.
Apertures cut through a surface, where the surround decides the colour you see in the gap.
A flat bar laid on a gradient appears to ramp even though it never changes.
Discs sharing one texture, read as different materials depending on their context.
Two squares that overlap, where the join tells you which one is in front and what colour it is.
A hue sweep behind grey ramp shutters. Where the border melts away, the colour and the grey share one luminance. Markers, a swatch with the percentage inside it and a live readout show the number. Set Shutter Count to 0 for a plain sweep with just the probes. Keyframe the hue and watch them ride the ramp.
Film makes colour by stacking dye layers in front of a light, so a layer can only take light away. Compare a film dye against a veil over the same checks, overlap cyan, magenta and yellow discs, or split a picture into three plates and stack them back up.
Two patches with the exact same value on two surrounds, and a readout that proves it. The one on the dark surround still looks lighter. Ride Exposure and the look holds even as the real numbers swing.
A ladder of grey steps, all the same number of stops apart, that do not look it. The steps near the surround level pull apart and the far ones bunch up. Turn on Pairs, or Grid for a board that climbs up and to the right from a black corner.
These run on the footage already in the node, so you can demonstrate the point on a real shot rather than a diagram.
Squeeze the range of the picture and watch how much of it your eye puts straight back.
Rebuild the shot from two colour records and see how much of a full picture survives.
Reduce the image to a small palette and show how few colours a picture really needs. The Sampled From Image preset reads the frame and fills the palette in coverage order, most common colour first.
Split the shot into cyan, magenta and yellow dye layers and stack them back up in front of a light, lossless at the defaults. View each layer on its own, grade with per layer gains the way a lab would, and drop Dye Purity to watch the colours go muddy.
Your clip, untouched apart from the size, inside a matte you flip between two values. On a dark matte it looks brighter and punchier, on a bright matte darker and flatter. This is why a grade done in a dark room can look wrong on a bright screen.
Known references you push through the whole chain. The four photographs ship inside the plugin as scene linear frames and leave the node untouched by default, no clamp and no encode. Put a Colour Space Transform after the node, tell it the stored space, and judge what your pipeline does to the hard parts. Or switch Image Options to DaVinci Wide Gamut / Intermediate and the node converts the primaries and applies the Intermediate curve itself, ready for a DWG/I timeline. The commentary on each one names its colour space and says where a poor picture formation breaks the image.
A clean grey card with a chip row, for checking exposure, neutrality and transform behaviour.
Hue rows against exposure columns that double around mid grey, the same chart as the RGB Chips DCTL with every control: hues, columns, saturation, clamp, gray ramp, gaps, HSV or spherical model, continuous modes. Values leave the node raw, so hang a CST after it and watch what moves.
A bar lit hard in blue, linear Rec.709. Watch the blue ceiling light and the neon. A poor picture formation clamps them into flat cyan or magenta slabs instead of rolling them toward white.
Saturated red emitters on a dark field, linear Rec.709. Watch the bulb cores and the red spill. A poor picture formation turns the bulbs into flat orange discs and the spill into one red with no detail.
A glowing blade many stops over mid grey, linear sRGB. Watch the blade core and its spill. A poor picture formation leaves a flat coloured stick with a hard edge and the scene looks painted.
A diver straight off the camera, linear ARRI Wide Gamut 4. Watch the red across the face and the orange flare against blue. A poor picture formation piles the skin into one red tone and turns the flare edge muddy grey.
Download · Color Theory
Three native builds: Metal on macOS, CUDA on Windows and Linux. Download, unzip into your OFX plugins folder, and restart your host. The effect shows up under the Dec. 18 Studios group as Color Theory. It is free, and there is no licence to enter.
Universal · Metal
/Library/OFX/Pluginsx86_64 · CUDA
C:\Program Files\Common Files\OFX\Pluginsx86_64 · CUDA
/usr/OFX/PluginsWant an older build? Everything lives on the Releases page. After unzip the layout is /Library/OFX/Plugins/ColorTheory.ofx.bundle/
Getting started
Color Theory is a standard OFX bundle. Drop it in your host's OFX plugins folder and restart. Or let the Tool Box Manager handle it along with everything else.
Grab the macOS, Windows or Linux build from the Downloads above, then unzip the .zip.
macOS: /Library/OFX/Plugins · Windows: C:\Program Files\Common Files\OFX\Plugins · Linux: /usr/OFX/Plugins. The final layout is /OFX/Plugins/ColorTheory.ofx.bundle/.
Relaunch Resolve, Fusion or Nuke so it picks up the new plugin, and make sure OFX is enabled.
Find Color Theory under the Dec. 18 Studios OFX group. Choose a group, choose a mode, then drive Reveal and Simulate Appearance to make your point.
It's free, always
Color Theory costs nothing. Use it in class, in a video, in a client session, on as many machines as you like. If it earns a place in how you teach, tell someone about it. Questions, requests and test images of your own go in the Dec18 Studios Discord, and there is a Join the Discord button at the bottom of the plugin panel.