Skip to content
Apexify.jsDocs
Apexify.js version v5.4.5

Node / Images Shapes · guide

Cinematic effects (effects)

Current Apexify.js 6.0.0 documentation for Cinematic effects (effects).

apexify.jsRuntime: nodeCURRENTSince 6.0.0

The effects bag hosts lightweight screen-space treatments rendered after the bitmap pixels land (still before stroke on bitmap layers).

Shape layers (source as ShapeType) do not execute this effects block — bake glow/grain into textures or duplicate as an underlying bitmap layer.


Shape of effects

SOURCEtypescript
typescript
Studio
effects?: {  vignette?: { intensity: number; size: number };  lensFlare?: { x: number; y: number; intensity: number };  chromaticAberration?: { intensity: number };  filmGrain?: { intensity: number };};

You may combine keys — each helper operates sequentially inside one save/restore pair.


vignette

Darkens edges toward transparency while preserving the centre.

FieldTypical rangeMeaning
intensity0 … ~1How strongly corners darken
size> 0Relative radial extent (implementation interprets across width/height)

lensFlare

Adds a directional glare originating near x, y relative to the layer box origin (box.x + x, box.y + y).

FieldNotes
intensityStrength multiplier

chromaticAberration

Splits colour channels slightly for a prism fringe look.

FieldNotes
intensityLarger ⇒ stronger separation

Uses an internal ImageData copy buffer — slightly heavier than vignette alone.


filmGrain

Adds animated-feeling monochrome grain via ImageData manipulation.

FieldNotes
intensityGrain visibility

Example — stacked mood grade

SOURCEtypescript
typescript
Studio
await painter.createImage(  {    source: './scene.jpg',    x: 0,    y: 0,    width: 960,    height: 540,    fit: 'cover',    effects: {      vignette: { intensity: 0.45, size: 220 },      chromaticAberration: { intensity: 1.4 },      filmGrain: { intensity: 0.12 },      lensFlare: { x: 720, y: 80, intensity: 0.35 },    },    stroke: { color: '#ffffff22', width: 2 },  },  buffer);

Known limitation

When filterOrder: 'pre', distortion, or meshWarp triggers an early return, effects never execute on that bitmap layer.


Next steps