home/ modules/ compositing-visuals-with-blend-modes

Compositing visuals with blend modes

  • learner can predict the visual result of any standard blend mode from its per-pixel formula
  • learner can group blend modes into darken/lighten, dodge/burn and contrast families and choose the right one for a look
  • learner can build layered composites that exploit transparency behaviour (black/white pass-through) intentionally

Produce a blend-mode reference reel: for a single pair of source layers, render and caption at least twelve composites (multiply, screen, additive, overlay/hard/soft light, difference, divide, darken/lighten, hue-family, linear/vivid light) explaining each formula and where you would use it in a set.

When you layer a Hydra oscillator over camera feedback mid-set, or stack a glow pass on a geometry layer in Resolume, the blend mode is the single decision that determines whether the composite reads as intended or turns to mud. Club visuals live and die on this: additive stacks blow out under bright content, multiply kills a dark stage wash, and picking by trial-and-error costs you bars of music. This module builds the whole skill — reading a blend mode’s per-pixel formula and predicting its look before you apply it.

The arc starts supported: begin with the core definition of blending as per-pixel math, then drill the three workhorse formulas — multiply’s darkening product, screen’s invert-multiply-invert, and additive’s clipping sum — until you can state each mode’s black/white pass-through behaviour without thinking. From there, move to the conditional and family modes: the Overlay/Hard Light commutation, Soft Light’s gentler curve, and the dodge/burn mirror-symmetry principle that lets you derive unfamiliar modes from familiar ones instead of memorising them. Difference, divide, darken/lighten-only, and the hue/saturation/color/luminosity swaps round out the vocabulary.

The capstone removes the scaffolding: one fixed pair of source layers, at least twelve rendered composites, each captioned with its formula and a concrete use in a set. Every required atom is gated by that reel — you cannot caption a mode you cannot explain, and the family atoms are what let your captions say why you would reach for one mode over its siblings. The supporting atoms enrich rather than gate: dissolve’s stochastic grain is a stylistic outlier, and the layer-versus-tool blending distinction matters for destructive-editing workflows outside the live rig.

Walkthrough

Compositing is just per-pixel math between two layers — and Hydra gives you the workhorse formulas as chainable operators. You’ll composite one fixed source pair every way the engine offers, then stack them into a set-ready image. Open the Hydra editor and run each patch with Ctrl-Shift-Enter (hush() clears). Each fence is a complete patch; every one outputs to o0 so you see it. (The full 12-mode Photoshop reel — overlay, soft/hard/vivid/linear light, divide, the hue/sat/color/luminosity swaps — lives in an image editor; here you learn the ones a live GPU engine actually runs.)

1 — two layers, and what “blend” means. .blend(other, amount) is the plainest composite: a linear crossfade, amount of the top mixed into the bottom. Our two fixed sources — a warm oscillator and a cool noise field — averaged 50/50 ([[blend-mode-definition]], [[blend-mode-dissolve]]).

osc(20, 0.1, 0.8)
  .blend(noise(3).color(0.2, 0.5, 1), 0.5)   // 50/50 crossfade of the two layers
  .out(o0)

2 — additive (light adds up). .add(other, amount) sums the two layers’ colours, so overlaps get brighter and can clip to white — the “screen-family” glow you use for light, glints, and energy. White in either layer wins; black passes through ([[additive-blend-mode]], [[screen-blend-mode]]).

osc(20, 0.1, 0.8)
  .add(noise(3).color(0.2, 0.5, 1), 1)        // sum → brighter where they overlap
  .out(o0)

3 — multiply (darken). .mult(other) multiplies the layers, so anything dark in either stays dark — the inverse of add. Use it to tint, to burn shadows, to let one layer carve into another. White passes through; black wins ([[multiply-blend-mode]], [[darken-lighten-only-blend]]).

osc(20, 0.1, 0.8)
  .mult(noise(3).color(0.2, 0.5, 1))          // product → darker where either is dark
  .out(o0)

4 — difference (edges and inversions). .diff(other) takes the absolute difference of the two layers: matching areas go black, mismatched areas invert and glow. It’s the go-to for hard, glitchy, high-contrast edge accents ([[difference-blend-mode]]).

osc(20, 0.1, 0.8)
  .diff(noise(3).color(0.2, 0.5, 1))          // |A − B| → glowing edges, black where equal
  .out(o0)

5 — alpha compositing (layer) and cut-outs (mask). .layer(other) stacks the top layer using its alpha (transparency over, not math) — the way you drop a shape onto a scene. .mask(other) uses one layer’s luminance as a stencil to cut the other. Both here, so you see the shape sit and clip ([[hard-light-vs-overlay]], [[soft-light-blend-mode]]).

osc(20, 0.1, 0.8)
  .layer(shape(4, 0.3, 0.02).color(1, 0.8, 0.2))   // alpha-over: a diamond drops onto the field
  .mask(shape(64, 0.9, 0.4))                        // luminance stencil: soft circular vignette
  .out(o0)

6 — a stacked composite (the capstone). Real set images use several operators at once. Here: an additive glow over a base, multiplied by a slow luma for depth, with difference edge accents on top — one deliberate light pass, one dark pass, one edge pass ([[dodge-burn-blend-family]]):

osc(18, 0.08, 0.9).color(1, 0.4, 0.2)
  .add(noise(2.5).color(0.1, 0.4, 1), 0.6)    // light pass — additive glow
  .mult(osc(4, 0).color(0.7, 0.9, 1))          // dark pass — multiply a slow luma for depth
  .diff(shape(6, 0.4).scale(1.2))              // edge pass — difference accents
  .out(o0)

What good looks like. A composite should have a clear tonal intention — one operator doing the main job (glue, glow, or cut) and the others supporting, not four modes fighting to mid-grey mud. Additive and difference blow out fast: pull their amount down until the image breathes. The beginner tell is everything on .add at full strength, clipping to white. Name what each layer contributes — light, shadow, or edge — before you stack it. (Skill map: live-visualist Domain B4 — contrast and depth as language; use blend to build layers you can read.)

Now make it yours. Swap the two sources (voronoi, gradient, a camera s0) and re-run the whole tour. Animate .blend’s amount with () => Math.sin(time) * 0.5 + 0.5 for a crossfade transition. Build “screen” explicitly as invert → mult → invert to feel the formula. Feed a feedback buffer (src(o0)) as the second layer for compositing trails.

Atoms in this module

Required — these gate the capstone

A blend mode is a per-pixel formula that determines how two image layers combine into a composite result
Concept L1 Foundations IGH
Multiply blend mode darkens by multiplying per-channel values, giving white transparency and black full darkening
Concept L1 Foundations IGH
Screen blend mode lightens by inverting, multiplying, and inverting again — giving black transparency and white full brightening
Concept L1 Foundations IGH
Additive (Linear Dodge) blend mode sums pixel values, producing glowing brightness that clips to white on overflow
Concept L1 Foundations IGHJ
Overlay blends Multiply and Screen conditionally on the base layer: darks get darker, lights get lighter, midtones are unaffected
Concept L2 First instrument IGH
Hard Light and Overlay are commuted versions of the same formula: Hard Light treats the blend layer as Overlay treats the base layer
Concept L2 First instrument IGH
Soft Light is a gentler Overlay where pure black or white inputs do not produce pure black or white outputs
Concept L2 First instrument IGH
Difference blend mode subtracts layers and takes the absolute value, making matching areas black and differing areas bright
Concept L2 First instrument IGH
Divide blend mode divides the base by the top layer, so a darker top brightens the base and any colour over black becomes white
Concept L2 First instrument IGH
Darken Only and Lighten Only take the per-channel min and max of the two layers
Concept L2 First instrument IGH
Dodge modes lighten and burn modes darken as mirror images: dodging equals burning the negative
Principle L2 First instrument IGH
Linear Light combines Linear Dodge and Linear Burn and simplifies to base + 2·top − 1, decreasing contrast
Concept L3 Craft IGH
Vivid Light combines Color Dodge and Color Burn around middle grey, increasing perceived contrast
Concept L3 Craft IGH
Hue/Saturation/Color/Luminosity blend modes swap perceptual dimensions between layers rather than mixing channel values
Concept L2 First instrument IGH

Supporting — enrichment, not gating

Dissolve blend mode creates a grainy stochastic transition by randomly sampling pixels from each layer based on opacity
Concept L2 First instrument IH
Layer blend modes are non-destructive and dynamic; painting tool blend modes permanently alter pixels
Concept L2 First instrument IH
Depth is implied by overlap, scale, parallax, atmospheric fade, and blur-soften on layers
Concept L2 First instrument LHG