Relight 2D

Brief Description

Relight an image according to a normal map. The light model is a directional light.

Controls

Parameter / Script Name Type Default Function
Enabled / enabled Boolean On
Red / process_red Boolean On Enable the red channel in output. Otherwise if there's a source the main source content is returned, else 0.
Green / process_green Boolean On Enable the green channel in output. Otherwise if there's a source the main source content is returned, else 0.
Blue / process_blue Boolean On Enable the blue channel in output. Otherwise if there's a source the main source content is returned, else 0.
Alpha / process_alpha Boolean On Enable the alpha channel in output. Otherwise if there's a source the main source content is returned, else 0.
Normal Map / normal_map Image -
Angle / angle Float 0
Altitude / elevation Float 0
Light Color / light_color Color 1, 1, 1, 1
Light Mode / light_mode Choice Screen

Add: Ac + Dc — Adds source to destination.

Color Dodge: if Ac < 1 → min(1, Bc/(1 − Ac)); else 1.

Lighten: max(Ac, Bc).

Linear Dodge: min(Ac + Bc, 1).

Screen: Ac + Bc − Ac×Bc.

Hard-light: multiply/screen based on Ac.

Hard Mix: vivid-light threshold.

Linear Light: burn/dodge depending on Ac.

Overlay: multiply/screen depending on Bc.

Pin Light: removes mid-tones.

Soft Light: multi-branch soft-light function.

Vivid Light: burn/dodge mix.

Difference: abs(A - B).

Divide: Ac / Bc (if valid; else 0).

Exclusion: Ac + Bc − 2AcBc.

Minus: Ac − Bc.

Subtract: Bc − Ac.

Color: SetLum(Ac, Lum(Bc)).

Hue: SetLum(SetSat(Ac, Sat(Bc)), Lum(Bc)).

Luminosity: SetLum(Bc, Lum(Ac)).

Saturation: SetLum(SetSat(Bc, Sat(Ac)), Lum(Bc)).

Replace: Ac.

Destination Atop: Bca×Aa + Aca×(1−Ba).

Destination Out: Ba×Bc×(1−Aa).

Destination Over: Aa×(1−Ba) + Bc.

Destination In: Bc×Aa.

Source Atop: Ac×Ba + Bc×(1−Aa).

Source Out: Ac×(1−Ba).

Normal: Ac + Bc×(1−Aa).

Source In: Ac×Ba.

Xor: Ac×(1−Ba) + Bc×(1−Aa).

Average: (Ac + Bc)/2.

Conjoint Over: conditional on Aa ≤ Ba.

Disjoint Over: conditional on Aa + Ba ≥ 1.

Geometric: 2AcBc/(Ac + Bc).

Grain Extract: Bc − Ac + 0.5.

Grain Merge: Bc + Ac − 0.5.

Hypot: sqrt(Ac² + Bc²).

Reflect: Aa²/(1−Ba).

Color Burn: 1 − min(1, (1−Bc)/Ac).

Darken: min(Ac, Bc).

Linear Burn: Bc + Ac − 1.

Multiply: Ac × Bc.

Multiply (Math): Ac × Bc (negatives preserved).

Shadow Color / shadow_color Color 0, 0, 0, 0.75
Shadow Mode / shadow_mode Choice Multiply

Add: Ac + Dc.

Color Dodge: if Ac < 1 → Bc/(1−Ac); else 1.

Lighten: max(Ac, Bc).

Linear Dodge: min(Ac + Bc, 1).

Screen: Ac + Bc − Ac×Bc.

Hard-light: multiply/screen based on Ac.

Hard Mix: vivid-light threshold.

Linear Light: burn/dodge based on Ac.

Overlay: depends on Bc.

Pin Light: removes mid-tones.

Soft Light: multi-branch function.

Vivid Light: burn/dodge mix.

Difference: abs(A - B).

Divide: Ac/Bc (if valid).

Exclusion: Ac + Bc - 2AcBc.

Minus: Ac - Bc.

Subtract: Bc - Ac.

Color: SetLum(Ac, Lum(Bc)).

Hue: SetLum(SetSat(Ac, Sat(Bc)), Lum(Bc)).

Luminosity: SetLum(Bc, Lum(Ac)).

Saturation: SetLum(SetSat(Bc, Sat(Ac)), Lum(Bc)).

Replace: Ac.

Destination Atop: Bca×Aa + Aca×(1−Ba).

Destination Out: Ba×Bc×(1−Aa).

Destination Over: Aa×(1−Ba) + Bc.

Destination In: Bc×Aa.

Source Atop: Ac×Ba + Bc×(1−Aa).

Source Out: Ac×(1−Ba).

Normal: Ac + Bc×(1−Aa).

Source In: Ac×Ba.

Xor: Ac×(1−Ba) + Bc×(1−Aa).

Average: (Ac + Bc)/2.

Conjoint Over: depends on Aa ≤ Ba.

Disjoint Over: depends on Aa + Ba ≥ 1.

Geometric: 2AcBc/(Ac + Bc).

Grain Extract: Bc − Ac + 0.5.

Grain Merge: Bc + Ac − 0.5.

Hypot: sqrt(Ac² + Bc²).

Reflect: Aa²/(1−Ba).

Color Burn: 1 − min(1, (1−Bc)/Ac).

Darken: min(Ac, Bc).

Linear Burn: Bc + Ac − 1.

Multiply: Ac × Bc.

Multiply (Math): Ac × Bc.

Blend With Source / enable_blend_with_source Boolean On
Mask / mask Image -
Mix / mix_with_source Float 1 Dissolves between original image at 0 and the effect at 1.