Skip to content
Voro
  1. Image
  2. Effects

Brushstrokes

Example Built with Kernel FX Ships with Voro as an example. It may change between versions.

Brushstrokes paints the input over time. Brushes respond to differences between the subject and the existing painting, leaving marks that retain colour and wetness. Brush width, paint medium and canvas texture determine how much detail survives.

Place Brushstrokes under Effects in the Image view and connect a picture to image. Start in Follow mode. Set Brush Width for the level of detail you want, then adjust Paint Rate and Response while the source moves.

Use the Painting tap to judge the result. The other taps help inspect wetness, coverage and the remaining difference from the subject.

  • image is the subject to paint.
  • field steers brush direction with signed horizontal and vertical vectors. Black is neutral.
  • medium varies the paint material across the image through Medium Field.
  • palette supplies colours when Palette Input is above zero.
  • out is the painting or selected diagnostic.
  • Painting Mode selects Follow, Accumulate or Alpha. Alpha limits painting by the source alpha.
  • Paint Rate sets how many brushes can make a mark. Response controls how quickly they react to a changed subject.
  • Brush Width sets the largest mark in canvas millimetres. Brush Tiers adds finer passes.
  • Persistence retains paint history. Wetness changes blending and drying; Body adds paint volume.
  • Palette selects source colours or a limited palette. Read Palette As interprets the palette input as a gradient, image or swatch strip.
  • Lift removes paint toward the ground. Relief and Raking Light reveal paint height.

Canvas Size and Brush Width work together in physical units. Change the canvas size deliberately when comparing the same brush settings at different image resolutions.

Inputs

  • image image required
    RGBA
  • field image
    2 channels
  • medium image
    single channel
  • palette image
    RGBA

Outputs

  • out image
    RGBA

Brushstrokes

Mix (Mix) Float op('brushstrokes').par.Mix

Blend source to paint; 0 is exact passthrough.

Default:
1
Range:
0 to 1
Painting Mode (Application) Menu op('brushstrokes').par.Application

Follow converges to the subject; Accumulate keeps working; Alpha paints only where source alpha permits.

Default:
follow
Options:
follow, accumulate, alpha
Paint Rate (Paintrate) Float op('brushstrokes').par.Paintrate

Fraction of the brush pool allowed to make a mark each generation; spatial coverage is unchanged.

Default:
0.6
Range:
0 to 1
Response (Response) Float op('brushstrokes').par.Response

How quickly a brush abandons a stale assignment when the subject changes.

Default:
0.62
Range:
0 to 1
Convergence (Convergence) Float op('brushstrokes').par.Convergence

How decisively residual image error controls new paint. High values settle accurately and become quiet.

Default:
0.72
Range:
0 to 1
Persistence (Persistence) Float op('brushstrokes').par.Persistence

How long marks, loaded brushes and wet paint retain their history.

Default:
0.58
Range:
0 to 1
Brush Width (Brush) Float op('brushstrokes').par.Brush

Largest brush width in canvas millimetres; the primary abstraction control.

Default:
26
Range:
4 to 120
Brush Tiers (Tiers) Menu op('brushstrokes').par.Tiers

Block-in only, block plus development, or block/develop/detail.

Default:
3
Options:
1, 2, 3
Stroke Length (Length) Float op('brushstrokes').par.Length

Stroke length in brush widths.

Default:
3
Range:
0.5 to 6
Detail (Detail) Float op('brushstrokes').par.Detail

How strongly fine brushes reserve themselves for unresolved structure.

Default:
0.62
Range:
0 to 1
Follow Structure (Direction) Float op('brushstrokes').par.Direction

Align strokes to subject contours.

Default:
0.85
Range:
0 to 1
Field Influence (Field) Float op('brushstrokes').par.Field

Signed RG field steering; black is neutral.

Default:
1.2
Range:
0 to 4
Gesture (Gesture) Float op('brushstrokes').par.Gesture

From steady deliberate strokes to curved, split, visibly hand-driven marks.

Default:
0.25
Range:
0 to 1
Canvas (Seed) Int op('brushstrokes').par.Seed

Stable canvas and brush identity.

Default:
23
Range:
0 to 99999
Tap (Tap) Menu op('brushstrokes').par.Tap

Painting or one internal material field.

Default:
painting
Options:
painting, wet, bed, height, direction, medium, cover, error

Paint

Medium (Medium) Menu op('brushstrokes').par.Medium

One continuous material solver from knife through ink; Lift is controlled separately.

Default:
oil
Options:
knife, oil, acrylic, gouache, charcoal, aerosol, ink
Medium Field (Mediumrange) Float op('brushstrokes').par.Mediumrange

White on the medium input sweeps upward from the selected material.

Default:
0.45
Range:
0 to 1
Palette (Palette) Menu op('brushstrokes').par.Palette

Source colour or a limited physical box.

Default:
source
Options:
source, mono, duo, warm, cool, neon, earth, print
Pigments (Pigments) Int op('brushstrokes').par.Pigments

Number of available swatches; two naturally becomes a duotone.

Default:
6
Range:
2 to 6
Colour Fidelity (Fidelity) Float op('brushstrokes').par.Fidelity

How closely each reload matches its target instead of retaining brush colour.

Default:
1
Range:
0 to 1
Colour Variation (Variation) Float op('brushstrokes').par.Variation

Stroke-to-stroke value and temperature drift.

Default:
0.18
Range:
0 to 0.8
Palette Input (Palettemix) Float op('brushstrokes').par.Palettemix

Blend toward the palette port; zero is neutral.

Default:
0
Range:
0 to 1
Read Palette As (Paletteread) Menu op('brushstrokes').par.Paletteread

Gradient, registered image, or swatch strip.

Default:
gradient
Options:
gradient, image, swatch
Wetness (Wetness) Float op('brushstrokes').par.Wetness

One coherent wet-in-wet decision controlling blend, flow, levelling and drying.

Default:
0.5
Range:
0 to 1
Body (Body) Float op('brushstrokes').par.Body

Paint volume and impasto build.

Default:
1
Range:
0 to 3
Covering Power (Cover) Float op('brushstrokes').par.Cover

From transparent glaze to opaque paint.

Default:
0.9
Range:
0.05 to 1
Runs (Runs) Float op('brushstrokes').par.Runs

Signed wet-pigment pull; positive runs downward, negative upward.

Default:
0
Range:
-2 to 2
Lift (Lift) Float op('brushstrokes').par.Lift

Controlled brush-shaped removal back toward the ground; unlike the old global Solvent medium it is dosed and spatial.

Default:
0
Range:
0 to 1

Canvas

Canvas Size (Canvas) Float op('brushstrokes').par.Canvas

Long edge in millimetres; brush and material scale stay physical across resolutions.

Default:
900
Range:
200 to 2200
Ground (Ground) Menu op('brushstrokes').par.Ground

Primed surface revealed by open or lifted passages.

Default:
gesso
Options:
gesso, warm, grey, umber, black, raw
Canvas Texture (Texture) Float op('brushstrokes').par.Texture

Couples weave pitch, tooth and dry-brush response into one surface decision.

Default:
0.6
Range:
0 to 1
Relief (Relief) Float op('brushstrokes').par.Relief

How strongly physical paint height reads.

Default:
1
Range:
0 to 3
Light Angle (Lightangle) Float op('brushstrokes').par.Lightangle

Studio-light direction in degrees.

Default:
-40
Range:
-180 to 180
Raking Light (Rake) Float op('brushstrokes').par.Rake

From flat gallery light to low light that reveals every ridge.

Default:
0.58
Range:
0 to 1
Sheen (Sheen) Float op('brushstrokes').par.Sheen

Coherent material gloss plus a light varnish coat.

Default:
0.7
Range:
0 to 1
Exposure (Exposure) Float op('brushstrokes').par.Exposure

Gallery light level.

Default:
1
Range:
0.25 to 2.5