Virtual.ink Refine - Adobe Plugin Guide

Light-painting accumulation and decay trails for video footage. Turn any pre-recorded clip into a long-exposure light painting inside Adobe Premiere Pro or After Effects.

This guide covers the Adobe .aex implementation of Virtual.ink Refine, which runs inside Adobe Premiere Pro and After Effects.

Light-painting is about revealing reality in a way our eyes can't see. We all know the magic of long-exposure photography. But what if that same magic could live in video?


Installation

Windows

Virtual.ink Refine is distributed as a zip file containing virtualink-refine.aex. To install:

  1. Close Premiere Pro / After Effects if running.

  2. Extract the zip file.

  3. Copy virtualink-refine.aex to:

    C:\Program Files\Adobe\Common\Plug-ins\7.0\MediaCore\Virtual.ink\
    

    Create the Virtual.ink subfolder if it does not exist.

  4. Launch Premiere Pro or After Effects.

macOS (Intel and Apple Silicon)

Virtual.ink Refine is distributed as a zip file containing virtualink-refine.plugin. Both Intel and Apple Silicon (arm64) Macs are supported. To install:

  1. Quit Premiere Pro / After Effects if running.

  2. Extract the zip file.

  3. Copy virtualink-refine.plugin to:

    /Library/Application Support/Adobe/Common/Plug-ins/7.0/MediaCore/Virtual.ink/
    

    Create the Virtual.ink subfolder if it does not exist.

  4. If macOS Gatekeeper blocks the plugin the first time, allow it in System Settings > Privacy & Security.

  5. Launch Premiere Pro or After Effects.

Uninstallation

Quit Premiere Pro / After Effects, then delete the Virtual.ink folder from the MediaCore plug-ins directory shown above for your platform.

Getting Started

  1. In the Effects panel, find Virtual.ink > Refine.
  2. Drag the effect onto a video clip.
  3. Open Effect Controls for the clip.
  4. Adjust parameters (see below).
  5. Play back or export from the beginning of the clip for correct paint accumulation.

Important: The light-paint effect accumulates frame-by-frame in sequence. Always start playback, render, or export from the beginning of the clip when judging the result. Scrubbing and out-of-order previews can reconstruct or approximate the paint history, but they are not the authoritative view.

Known limitation: Apply other effects (Lumetri Color, and other GPU-accelerated effects) at the clip/timeline level, not the Master/source-clip level. Premiere renders source-level effect stacks through a separate render context from the one Virtual.ink Refine runs in, which breaks the strictly sequential frame stream the accumulation depends on. This causes visible glitches such as trails that look out of order or jump between older/newer states, and worse artifacts on export than in a "Render in to out" preview. Instead, drag other effects onto the clip in the timeline, or use an adjustment layer above it, so everything stays in one render context. This is a Premiere rendering-architecture limitation, not something the plugin can fully work around.

Premiere Pro Tips

  • The best way to reveal the full light-painting result in Premiere Pro is to render the sequence from the Sequence menu. Because the effect builds over time, a rendered preview is often more reliable than real-time playback.
  • To test only part of your timeline, set In and Out points first, then render just that section.
  • If your computer struggles with high-resolution footage, create proxies before testing. This plugin is computationally demanding, and proxies can make iteration much smoother.

Parameters

About Virtual.ink Refine

Type Button

Opens the about dialog, showing the installed version number, credits, and links to virtual.ink, lightpainting.store, and xangleapps.com.


Account...

Type Button

Opens the account dialog, showing your Refine license status and expiry, with sign-in/activation and links to purchase or manage a license at virtual.ink/refine. This license is separate from any Virtual.ink desktop app subscription.


Decay Mode

Type Popup
Options Linear, Natural, Gentle, Smooth, Soft Landing, Steps, Pulse, Blink, Dissolve, Sputter, Ember
Default Linear
Keyframeable Yes
Applies to Peak accumulation mode only

Controls the mathematical curve used when paint fades out.

Scope: Decay Mode only shapes the fade in Peak accumulation mode (see Accumulation below). Light/Color Separation, Animate (Zoom/Gravity), and Slow burn accumulation each decay their buffer at a fixed exponential rate driven only by Fade Duration, regardless of the Decay Mode selection. Premiere cannot dynamically grey out a control depending on other settings, so this popup stays visible and editable even when it has no effect.

Mode Behaviour
Linear Holds, then fades in a straight line. Predictable and uniform.
Natural Holds, then fades exponentially: a faster initial drop with a longer tail.
Gentle Holds, then fades with a cosine curve for a softer roll-off.
Smooth Fades with a quintic (smootherstep) curve: zero slope at both the start and end of the fade, for the smoothest possible transition.
Soft Landing Fades quickly at first, then eases into its final approach to black.
Steps Fades in five discrete brightness plateaus instead of a continuous ramp, for a stepped/posterized look.
Pulse Fades out while a subtle pulsing/breathing brightness ripple plays over the trail.
Blink Holds, then blinks off in three square flashes with shrinking on-time near the end of the fade.
Dissolve Individual pixels drop out at full brightness (a sparkle/dissolve pattern) instead of dimming uniformly -- never fades to grey.
Sputter Fades with random flicker/dropouts that become more frequent toward the end of the fade.
Ember Fades with a cooling color tint (white to yellow to orange to red) instead of dimming toward grey, like a fading ember.

Paint Duration (ms)

Type Slider
Range 0 -- 20,000 ms
Default 0
Keyframeable Yes
Applies to Peak accumulation mode only

How long paint stays at full brightness before fading begins under the selected Decay Mode curve.

  • A value of 0 means the fade begins immediately.
  • If Paint Duration and Fade Duration are both 0, paint is permanent.
  • If Paint Duration is greater than 0 and Fade Duration is 0, paint holds and then drops away immediately.

Scope: like Decay Mode, this hold plateau only applies in Peak accumulation mode. Light/Color Separation, Animate, and Slow burn accumulation start decaying as soon as paint stops being deposited and ignore this control.


Fade Duration (ms)

Type Slider
Range 0 -- 20,000 ms
Default 3,000
Keyframeable Yes

How long it takes for paint to fade from full brightness to invisible after the Paint Duration has elapsed.

  • Short values (500--1,500 ms): snappy, short-lived trails.
  • Medium values (2,000--5,000 ms): flowing tails that linger naturally.
  • Long values (8,000--20,000 ms): the paint hangs around for a very long time, building up dense layers.

Paint is only permanent when Paint Duration and Fade Duration are both 0.

Scope: Fade Duration applies in every mode, but works differently outside Peak. In Light/Color Separation, Animate, and Slow burn accumulation, Fade Duration sets a fixed exponential decay rate for the buffer (Decay Mode's curve shape and Paint Duration's hold plateau do not apply there); 0 still means permanent paint.


Paint Opacity (%)

Type Slider
Range 0 -- 100%
Default 100
Keyframeable Yes

Overall opacity of the accumulated paint layer before it is composited with the original footage. Lowering this creates a more transparent, ghostly trail effect.

This is a display-side control. Changing it does not clear the stored paint history.


Blend Mode

Type Popup
Options Lighten, Screen, Soft Light, Luminosity, Color, Normal
Default Lighten
Keyframeable Yes
Applies to Peak, Light/Color Separation, and Animate -- not Slow burn

Controls how the accumulated paint layer is composited onto the original footage.

Scope: Blend Mode has no effect in Slow burn accumulation mode, which always uses its own photographic exposure composite instead (see Accumulation below). It applies normally in Peak mode and alongside Light/Color Separation or Animate.

Mode Result
Lighten Each pixel takes the brighter of the original or the paint. Clean, never over-brightens.
Screen Additive blend that avoids clipping. Bright, airy trails. Good default for most footage.
Soft Light Subtle, smooth overlay. Paint gently tints the image without dominating.
Luminosity Mirror of Color: keeps the scene's own hue and saturation and uses the paint's brightness to lighten it. Often reads as a softer, more natural glow than Lighten for bright/white trails, since the scene's own color shows through instead of flattening toward grey-white.
Color Applies the paint's hue and saturation while preserving the original luminance. Useful for tinting scenes with colored light sources.
Normal The paint replaces the scene outright wherever it's present, instead of being math-blended against it. Use this if you want to control how the trail combines with layers below using Premiere/After Effects' own track/layer blend mode instead of this plugin's internal one.

This is also a display-side control. Changing it does not clear the stored paint history.


Reset Paint

Type Checkbox
Default Off
Keyframeable Yes

When checked, clears all accumulated paint on that frame -- the entire internal buffer is wiped to black.

Typical workflow:

  1. Leave Reset Paint off during normal playback.
  2. On the frame where you want to clear all trails, keyframe Reset Paint on.
  3. On the very next frame, keyframe it back off.

This lets you create multiple independent light-paint segments within a single clip without splitting it. For example, if a scene has two separate performances, you can reset between them so paint from the first doesn't bleed into the second.


Separation

Type Popup
Options None, Light, Color
Default None
Keyframeable Yes

Selects how the plugin separates the displayed paint from the rest of the scene, so the scene can be dimmed or desaturated independently before the paint is composited back in.

Mode Behaviour
None No separation. The scene is untouched.
Light Classifies bright content as paint versus scene using Sep Strength, which directly darkens the non-light background. Good default for isolating bright light sources.
Color Classifies paint using a target hue (Target Color), Color Tolerance, and Saturation Minimum. Useful when the paint has a distinct color from the rest of the scene.

The controls below apply depending on the selected mode.


Sep Strength

Type Slider
Range 0 -- 100
Default 80
Keyframeable Yes
Applies to Light mode

How aggressively bright content is classified as paint versus scene. 0 leaves the scene untouched; 100 suppresses the background fully so only light and trails remain.


Target Color

Type Color picker (eyedropper)
Default Red (255, 0, 0)
Keyframeable Yes
Applies to Color mode

The hue used to classify paint versus scene when Separation is set to Color.


Color Tolerance

Type Slider
Range 1 -- 180
Default 30
Keyframeable Yes
Applies to Color mode

Hue distance (in degrees) from Target Color that still counts as paint. Lower values are more selective; higher values accept a wider range of hues.


Saturation Minimum

Type Slider
Range 0 -- 100
Default 50
Keyframeable Yes
Applies to Color mode

Minimum saturation a pixel must have to be considered paint in Color mode. Raises the bar so desaturated/grayish content is treated as scene, not paint.


Sep Softness

Type Slider
Range 0 -- 100
Default 0
Keyframeable Yes
Applies to Light and Color modes

Controls the softness of the separation edge. Lower values create a harder edge; higher values produce a smoother transition.


Scene Dim

Type Slider
Range 0 -- 100
Default 0
Keyframeable Yes
Applies to Light and Color modes

Darkens non-paint areas before the paint is composited back in. At 0, the scene is left untouched. At 100, non-paint areas are driven fully to black.


Scene Desat

Type Slider
Range 0 -- 100
Default 0
Keyframeable Yes
Applies to Light and Color modes

Desaturates non-paint areas. At 100, the scene becomes grayscale while the paint retains its color.


Paint Tint

Type Color picker (eyedropper)
Default White (255, 255, 255) -- no tint
Keyframeable Yes

Applies a color tint to the displayed paint. White means no tinting. Pick any color to shift the paint hue for stylistic effects or to match a grade.


Animate

Type Popup
Options None, Zoom, Gravity
Default None
Keyframeable Yes

Animates the accumulated trail over time instead of leaving it static.

Mode Behaviour
None No trail animation.
Zoom Trails grow or shrink outward/inward using Zoom Direction.
Gravity Trails drift in a direction using Gravity Direction.

Zoom Direction

Type Popup
Options Out, In
Default Out
Keyframeable Yes
Applies to Zoom mode

Gravity Direction

Type Popup
Options Down, Up, Left, Right, Spiral
Default Down
Keyframeable Yes
Applies to Gravity mode

Animation Length

Type Slider
Range 0.01 -- 40
Default 14.0
Keyframeable Yes
Applies to Zoom and Gravity modes

Controls how far the animation travels before a trail segment is fully spent.


Animation Speed

Type Slider
Range 0.05 -- 40
Default 14.0
Keyframeable Yes
Applies to Zoom and Gravity modes

Controls how fast the animation plays out.


Subject In Front (%)

Type Slider
Range 0 -- 100%
Default 0
Keyframeable Yes

Display-only control that attenuates accumulated paint where the live input is bright, so a subject reads in front of the trails instead of being painted over. 0 disables the effect.


Subject Distance (px)

Type Slider
Range 0 -- 500 px
Default 0
Keyframeable Yes

Expands the Subject In Front occlusion outward from the subject silhouette so trails keep a clearance gap around the subject. 0 means trails touch the subject (original behavior). Only active when Subject In Front is greater than 0.


Accumulation

Type Popup
Options Peak, Slow burn
Default Peak
Keyframeable No -- changing this resets the paint history (see What Resets the Paint History)

Selects the underlying accumulation model.

Mode Behaviour
Peak Classic per-channel max: each pixel latches the brightest value ever seen at that position, then fades according to Decay Mode, Paint Duration, and Fade Duration.
Slow burn Photographic long-exposure model: brightness is integrated over time as light energy (dwell time drives the tonality) instead of latching a peak, then passed through a film-style response curve for display. This restores smooth gradients in scenes where Peak produces harsh, flat plateaus -- for example, moving water reflections. Decay Mode, Paint Duration, and Blend Mode do not apply in this mode; Fade Duration sets the exposure window (0 = permanent).

The three controls below apply only when Accumulation is set to Slow burn.


Slow burn (%)

Type Slider
Range 1 -- 1,000%
Default 100
Keyframeable Yes
Applies to Slow burn mode

Display-only gain on the integrated light energy. Raise it to bring out dim trails sooner; around the default, roughly one second of full-white dwell time saturates.


Bloom (Slow burn)

Type Slider
Range 0 -- 100
Default 25
Keyframeable Yes
Applies to Slow burn mode

Adds a soft halation glow around bright accumulated trails. 0 disables it.


Highlight Limit (Slow burn)

Type Slider
Range 0 -- 100
Default 0
Keyframeable Yes
Applies to Slow burn mode

Soft-knee ceiling on the displayed exposure. Very bright areas (long dwell times, stacked reflections) are compressed toward a ceiling while their hue is preserved, instead of clipping to flat white. 0 disables it.


Quick Reference

Parameter Type Default Notes
About Virtual.ink Refine Button -- Opens the about/credits dialog
Account... Button -- Opens the account and license dialog
Decay Mode Popup Linear Peak accumulation mode only; 11 curves
Paint Duration (ms) Slider 0 Peak accumulation mode only
Fade Duration (ms) Slider 3,000 All modes (fixed rate outside Peak)
Paint Opacity (%) Slider 100 Display-only
Blend Mode Popup Lighten Display-only; no effect in Slow burn
Reset Paint Checkbox Off Clears accumulation on that frame
Separation Popup None None / Light / Color
Sep Strength Slider 80 Active in Light mode
Target Color Color Red Active in Color mode
Color Tolerance Slider 30 Active in Color mode
Saturation Minimum Slider 50 Active in Color mode
Sep Softness Slider 0 Active in Light/Color mode
Scene Dim Slider 0 Active in Light/Color mode
Scene Desat Slider 0 Active in Light/Color mode
Paint Tint Color White White = no tint
Animate Popup None None / Zoom / Gravity
Zoom Direction Popup Out Active in Zoom mode
Gravity Direction Popup Down Active in Gravity mode
Animation Length Slider 14.0 Active in Zoom/Gravity mode
Animation Speed Slider 14.0 Active in Zoom/Gravity mode
Subject In Front (%) Slider 0 Display-only
Subject Distance (px) Slider 0 Active when Subject In Front > 0
Accumulation Popup Peak Peak / Slow burn
Slow burn (%) Slider 100 Active in Slow burn mode
Bloom (Slow burn) Slider 25 Active in Slow burn mode
Highlight Limit (Slow burn) Slider 0 Active in Slow burn mode

How It Works

Paint Detection

How a pixel qualifies as "paint" depends on the active mode:

  • Peak with Separation = None (the classic path): each frame, the plugin compares pixel brightness against what's currently displayed there. A pixel is only treated as new paint when it's brighter than that value. This motion gate keeps static bright objects from being continuously re-painted, keeping the effect focused on moving light sources.
  • Light Separation: any pixel above a continuous brightness threshold (Sep Strength) accumulates every frame, with no motion requirement, so a static light source keeps painting.
  • Color Separation: any pixel matching Target Color within Color Tolerance and Saturation Minimum accumulates every frame, also with no motion requirement.
  • Slow burn accumulation: every pixel's brightness is continuously integrated as light energy over time regardless of motion; Light/Color Separation can still be used to decide what counts toward that energy.

Accumulation

  • Peak: paint pixels are merged into a persistent buffer using a per-channel MAX operation, so the buffer keeps the brightest value ever seen at each position. A per-pixel frame index tracks when each position was last painted, driving the age-based Decay Mode curve.
  • Slow burn: instead of latching a peak, brightness is integrated as light energy every frame, and that energy buffer decays exponentially at a rate set by Fade Duration. Bloom and Highlight Limit are applied when the energy is converted into a displayed image.

Decay

Over time, accumulated paint brightness is reduced:

  • In Peak mode, brightness follows the selected Decay Mode curve, computed from each pixel's paint time plus Paint Duration and Fade Duration. If both are 0, paint is permanent.
  • In Light/Color Separation, Animate (Zoom/Gravity), and Slow burn accumulation, the buffer decays continuously at a fixed exponential rate set only by Fade Duration (0 = permanent); Decay Mode and Paint Duration do not apply.

Compositing

The visible paint is optionally tinted, scaled by Paint Opacity, and composited with the original input frame using the selected Blend Mode -- except in Slow burn mode, which always uses its own photographic exposure composite instead (Blend Mode is ignored there). If Separation is set to Light or Color, scene pixels are dimmed and/or desaturated before the paint is blended back in. If Animate is set to Zoom or Gravity, the trail is animated as it composites. Subject In Front and Subject Distance can attenuate the trail where the live subject is bright. In Slow burn mode, Bloom adds a halation glow and Highlight Limit compresses very bright highlights before display.

Paint Opacity, Blend Mode, Scene Dim, Scene Desat, Paint Tint, Subject In Front, Subject Distance, Slow burn (%), Bloom, and Highlight Limit are display-side controls -- changing them does not clear the stored paint history. Separation mode itself (and its Sep Strength / Target Color / Color Tolerance / Saturation Minimum / Sep Softness controls) affects what gets accumulated as paint, not just how it's displayed, so changing it does reset the paint history (see below).

Playback and Scrubbing

The accumulation buffer is still fundamentally forward-looking: frame N depends on the frames before it. Sequential playback and export are the authoritative paths.

  • Same-frame re-renders reuse the current accumulation without mutating it.
  • Small forward gaps are reconstructed automatically.
  • Larger timeline jumps and scrubbing may reconstruct from cached snapshots or show an approximate result, especially at higher resolutions where snapshot caching is limited.

This is why Sequence > Render and proxies are the best way to judge the final result in Premiere Pro.

What Resets the Paint History

The accumulation state is rebuilt when any of these controls change:

  • Accumulation (Peak / Slow burn)
  • Decay Mode
  • Paint Duration
  • Fade Duration
  • Separation mode, Sep Strength, Target Color, Color Tolerance, Saturation Minimum, Sep Softness
  • Animate mode, Zoom Direction, Gravity Direction, Animation Length, Animation Speed
  • frame rate
  • the locked working resolution

After changing one of those core controls, replay or re-render from earlier in the shot.

Licensing

Virtual.ink Refine is licensed separately from the Virtual.ink desktop app; a desktop app subscription is not required. Without a valid Refine license, the effect still renders, but the plugin composites a watermark over the output. Activate a license from the Account... button to remove it.


Tips

  • Always play, render, or export from the start of the shot when judging accumulation.
  • Re-render after changing Decay Mode, Paint Duration, Fade Duration, Separation, Animate, or Accumulation because those controls rebuild the paint history.
  • Try Lighten or Screen blend mode as a starting point for most footage.
  • Use Slow burn accumulation for scenes where Peak looks flat or plateaued, such as moving water reflections; pair it with Bloom and Highlight Limit to control the glow and clipping.
  • Combine Scene Dim + Scene Desat with Separation (Light or Color) when you want the paint to stand out from the plate.
  • Use Reset Paint at scene cuts or between separate performances inside one clip.
  • Use Animate (Zoom or Gravity) to give trails motion instead of a static hold.
  • Use Subject In Front to keep a performer readable in front of dense trails.
  • Use proxies for high-resolution footage if full-resolution previews are too heavy.
  • Apply other effects at the clip level, not the Master/source-clip level, to avoid render-context glitches (see Known limitation above).