Virtual.ink Develop Studio -- 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.
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
Close Premiere Pro / After Effects if running.
Copy
VirtualInkDevelopStudio.aexto the shared Adobe plugin folder:C:\Program Files\Adobe\Common\Plug-ins\7.0\MediaCore\Virtual.ink\Launch Premiere Pro or After Effects.
Getting Started
- In the Effects panel, find Virtual.ink > Virtual.ink Develop Studio.
- Drag the effect onto a video clip.
- Open Effect Controls for the clip.
- Adjust parameters (see below).
- 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.
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
Type
Button
Opens the about dialog with version information, links, and license messaging.
Threshold
Type
Slider
Range
0 -- 255
Default
200
Keyframeable
Yes
Brightness cutoff for paint detection. The plugin computes each pixel's luminance (0.299R + 0.587G + 0.114B) and considers it "paint" if it exceeds this value. Lower values capture dimmer sources; higher values are more selective.
- Low values (50--100): captures most bright and mid-tone content. Useful for scenes with subtle light sources.
- Mid values (150--200): good starting point for typical LED and fire-based light painting.
- High values (220--255): only the very brightest highlights are treated as paint. Useful for isolating specular reflections or concentrated light sources.
Decay Mode
Type
Popup
Options
Linear, Natural, Gentle
Default
Linear
Keyframeable
Yes
Controls the mathematical curve used when paint fades out.
Mode
Behaviour
Linear
Paint holds at full brightness for the Paint Duration, then fades in a straight line over the Fade Duration. Predictable and uniform.
Natural
Paint holds, then fades exponentially with a faster initial drop and a longer tail.
Gentle
Paint holds, then fades with a cosine curve for a softer roll-off.
Paint Duration (ms)
Type
Slider
Range
0 -- 20,000 ms
Default
0
Keyframeable
Yes
How long paint stays at full brightness before fading begins in Linear, Natural, and Gentle modes.
- A value of
0means the fade begins immediately. - If Paint Duration and Fade Duration are both
0, paint is permanent. - If Paint Duration is greater than
0and Fade Duration is0, paint holds and then drops away immediately.
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 in Linear, Natural, and Gentle modes.
- 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.
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, Add, Color
Default
Screen
Keyframeable
Yes
Controls how the accumulated paint layer is composited onto the original footage.
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.
Add
Pure additive. Paint values are added directly to the original. Can clip to white on bright footage -- great for high-energy looks.
Color
Applies the paint's hue and saturation while preserving the original luminance. Useful for tinting scenes with colored light sources.
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:
- Leave Reset Paint off during normal playback.
- On the frame where you want to clear all trails, keyframe Reset Paint on.
- 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.
Light Separation
Type
Checkbox
Default
Off
Keyframeable
Yes
Enables the light separation system. When active, the plugin separates the displayed paint from the rest of the scene so the scene can be dimmed or desaturated before the paint is composited back in.
The controls below are disabled until Light Separation is turned on.
Sep Strength
Type
Slider
Range
0 -- 100
Default
50
Keyframeable
Yes
How aggressively bright content is classified as paint versus scene. Higher values push more of the image into the paint side of the separation.
Sep Softness
Type
Slider
Range
0 -- 100
Default
20
Keyframeable
Yes
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
50
Keyframeable
Yes
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
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.
Quick Reference
Parameter
Type
Default
Notes
About Virtual.ink
Button
--
Opens the about and license dialog
Threshold
Slider
200
Core accumulation cutoff
Decay Mode
Popup
Linear
Core accumulation mode
Paint Duration (ms)
Slider
0
Core accumulation timing
Fade Duration (ms)
Slider
3,000
Core accumulation timing
Paint Opacity (%)
Slider
100
Display-only
Blend Mode
Popup
Screen
Display-only
Reset Paint
Checkbox
Off
Clears accumulation on that frame
Light Separation
Checkbox
Off
Enables separation controls
Sep Strength
Slider
50
Active when Light Separation is on
Sep Softness
Slider
20
Active when Light Separation is on
Scene Dim
Slider
50
Active when Light Separation is on
Scene Desat
Slider
0
Active when Light Separation is on
Paint Tint
Color
White
White = no tint
How It Works
Paint Detection
Each frame, the plugin computes the luminance of every pixel:
L=0.299R+0.587G+0.114BL=0.299R+0.587G+0.114B
Pixels are only treated as paint when they are above Threshold and newly brighter than the previous frame. That motion gate prevents static bright objects from being continuously re-painted, keeping the effect focused on moving light sources.
Accumulation
Paint pixels are blended into a persistent internal buffer using a MAX operation. The buffer keeps the brightest value seen at each pixel position, while a per-pixel frame index tracks when each position was last painted.
Decay
Over time, accumulated paint brightness is reduced according to the selected Decay Mode:
- Linear, Natural, and Gentle are implemented as age-based modes. They compute the visible brightness from each pixel's paint time plus Paint Duration and Fade Duration.
- If Paint Duration and Fade Duration are both
0, paint is permanent.
Compositing
The visible paint is optionally tinted, scaled by Paint Opacity, and composited with the original input frame using the selected Blend Mode. If Light Separation is enabled, scene pixels are dimmed and/or desaturated before the paint is blended back in.
Paint Opacity, Blend Mode, Light Separation, Sep Strength, Sep Softness, Scene Dim, Scene Desat, and Paint Tint are display-side controls. Changing them does not clear the stored paint history.
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 core conditions change:
- Threshold
- Decay Mode
- Paint Duration
- Fade Duration
- frame rate
- the locked working resolution
After changing one of those core controls, replay or re-render from earlier in the shot.
Licensing
Without a valid Pro or Pulse license, the effect still renders, but the plugin composites a watermark over the output.
Tips
- Always play, render, or export from the start of the shot when judging accumulation.
- Re-render after changing Threshold, Decay Mode, Paint Duration, or Fade Duration because those controls rebuild the paint history.
- Use Screen blend mode as a starting point for most footage.
- Combine Scene Dim + Scene Desat with Light Separation 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 proxies for high-resolution footage if full-resolution previews are too heavy.