This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
Glow and Shadow
Outlines, glows, auras and shadows. They draw around the image, so they rely on padding.
Example status: these are parameter demonstrations, many adapted from TokenMagicFX. Every example passes leanFX's validator. Live appearance checks are recorded below each macro; matching colours and the result still depend on your source image. These checks do not establish long-running stability. Some examples intentionally darken or hide the original image.
Columns: Default is the value used when the spec omits the parameter. Animate says whether it can be driven by animated (Animation). Construction options are fixed when the filter is built; changing them rebuilds it.
glow · outline · bevel · xbloom · xglow · shadow · zapshadow
glow
Glow. A soft glow around (and optionally inside) the image's outline.
Default zOrder 70 · built-in padding 15
| Parameter | Type | Default | Animate | Description |
|---|---|---|---|---|
alpha |
number | 1 |
yes | Glow opacity, 0–1. |
color |
color | 0x0020ff |
color modes | Glow color. |
distance |
number | 10 |
no (construction) | Glow reach in pixels, 1–64. Construction option. |
innerStrength |
number | 0 |
yes | Inner glow strength. |
knockout |
boolean | false |
— | Show only the glow, hide the image. |
outerStrength |
number | 6.5 |
yes | Outer glow strength. |
quality |
number | 0.1 |
no (construction) | Sample quality 0.01–1; higher is smoother and slower. Construction option. |
await leanFX.addUpdateFiltersOnSelected([{
filterType: "glow",
filterId: "glow",
color: 0x5099dd,
outerStrength: 4,
innerStrength: 0,
quality: 0.5,
padding: 10,
animated: {
color: {
active: true,
animType: "colorOscillation",
loopDuration: 3000,
val1: 0x5099dd,
val2: 0x90eeff
}
}
}]);
Visual check: Blue glow appearance checked on a token in Foundry v14 on 2026-10-07. This is the Glow recipe from the translated TokenMagic test bench; the filter ID is renamed here.
outline
Outline. A solid outline along the image's edge.
Default zOrder 50 · built-in padding 5
| Parameter | Type | Default | Animate | Description |
|---|---|---|---|---|
alpha |
number | 1 |
yes | Outline opacity, 0–1. |
blendMode |
number | 0 |
yes | PIXI blend mode number used to draw the result: 0 normal, 1 add, 2 multiply, 3 screen. |
color |
color | 0x000000 |
color modes | Outline color. |
knockout |
boolean | false |
— | Show only the outline, hide the image. |
quality |
number | 0.1 |
no (construction) | Sample quality 0.01–1. Construction option. |
thickness |
number | 3 |
yes | Outline width in pixels. |
await leanFX.addUpdateFiltersOnSelected([{
filterType: "outline",
filterId: "outline",
color: 0xee5f35,
thickness: 1,
quality: 0.5,
animated: {thickness: {animType: "syncCosOscillation", loopDuration: 800, val1: 1, val2: 6}}
}]);
Visual check: User marked this example working on a Token in Foundry v14 on 2026-10-08. Other images and target types still need their own visual check.
bevel
Bevel. Embossed edge with a light and a shadow side.
Default zOrder 90 · built-in padding 10
| Parameter | Type | Default | Animate | Description |
|---|---|---|---|---|
blendMode |
number | 0 |
yes | PIXI blend mode number used to draw the result: 0 normal, 1 add, 2 multiply, 3 screen. |
lightAlpha |
number | 0.95 |
yes | Lit edge opacity, 0–1. |
lightColor |
color | 0xffffff |
color modes | Color of the lit edge. |
quality |
number | 1 |
no (construction) | Kept for compatibility; no visible effect. |
rotation |
number | 0 |
yes | Light direction in degrees. |
shadowAlpha |
number | 0.95 |
yes | Shadowed edge opacity, 0–1. |
shadowColor |
color | 0x000000 |
color modes | Color of the shadowed edge. |
thickness |
number | 5 |
yes | Bevel width in pixels. |
await leanFX.addUpdateFiltersOnSelected([{
filterType: "bevel",
filterId: "bevel",
thickness: 5,
lightColor: 0xff0000,
lightAlpha: 0.8,
shadowColor: 0x00ff00,
shadowAlpha: 0.5,
animated: {rotation: {animType: "syncRotation", loopDuration: 1600}}
}]);
Visual check: User marked this example working on a Token in Foundry v14 on 2026-10-08. Other images and target types still need their own visual check.
xbloom
Bloom. Makes bright areas bleed light.
Default zOrder 40
| Parameter | Type | Default | Animate | Description |
|---|---|---|---|---|
bloomScale |
number | 1 |
yes | Bloom strength. |
blur |
number | 4 |
yes | Bloom blur radius. |
brightness |
number | 1 |
yes | Overall brightness. |
kernels |
number array | [4, 3, 2, 1] |
— | Custom blur kernel sizes (array of numbers). Construction option. |
quality |
number | 4 |
no (construction) | Blur passes, 1–16. |
threshold |
number | 0.5 |
yes | Brightness above which pixels bloom, 0–1. |
await leanFX.addUpdateFiltersOnSelected([{
filterType: "xbloom",
filterId: "bloom",
threshold: 0.35,
bloomScale: 0,
brightness: 1,
blur: 0.1,
quality: 15,
animated: {bloomScale: {animType: "syncCosOscillation", loopDuration: 2000, val1: 0, val2: 2.1}}
}]);
Visual check: User marked this example working on a Token in Foundry v14 on 2026-10-08. Other images and target types still need their own visual check.
xglow
Gleaming Glow. An animated, flame-like aura along the outline.
Default zOrder 80
| Parameter | Type | Default | Animate | Description |
|---|---|---|---|---|
auraIntensity |
number | 1 |
yes | Strength of the outer aura. |
auraType |
number | 1 |
yes | Aura style: 1 or 2. |
color |
color | 0xff8010 |
color modes | Aura color. |
discard |
boolean | false |
— | Cut the aura where it is below threshold, leaving gaps. |
scale |
number | 1 |
yes | Noise scale of the aura. |
subAuraIntensity |
number | 1 |
yes | Strength of the inner glow. |
thickness |
number | 5 |
yes | Aura width. |
threshold |
number | 0.5 |
yes | Brightness below which aura pixels are dimmed or cut. |
time |
number | 0 |
yes | Shader clock. Static values freeze one frame; animate it with move (see the example) to make the effect flow. |
await leanFX.addUpdateFiltersOnSelected([{
filterType: "xglow",
filterId: "fire-aura",
auraType: 2,
color: 0x903010,
thickness: 9.8,
scale: 4,
auraIntensity: 2,
subAuraIntensity: 1.5,
threshold: 0.4,
discard: true,
animated: {
time: {animType: "move", speed: 0.0027},
thickness: {animType: "cosOscillation", loopDuration: 3000, val1: 2, val2: 5}
}
}]);
Visual check: User marked this example working on a Token in Foundry v14 on 2026-10-08. Other images and target types still need their own visual check.
shadow
Drop Shadow. A blurred shadow cast by the image.
Default zOrder 110 · built-in padding 10
| Parameter | Type | Default | Animate | Description |
|---|---|---|---|---|
alpha |
number | 0.5 |
yes | Shadow opacity, 0–1. |
blur |
number | 2 |
yes | Shadow blur. |
color |
color | 0x000000 |
color modes | Shadow color. |
distance |
number | 5 |
yes | Shadow offset in pixels. |
kernels |
number array | [2, 1.333, 0.667] |
— | Custom blur kernel sizes (array of numbers). Construction option. |
quality |
number | 3 |
no (construction) | Blur passes, 1–16. |
resolution |
number | 1 |
yes | Render resolution of the shadow, 0.1–4. |
rotation |
number | 45 |
yes | Shadow direction in degrees. |
shadowOnly |
boolean | false |
— | Draw only the shadow, hide the image. |
await leanFX.addUpdateFiltersOnSelected([{
filterType: "shadow",
filterId: "dropshadow",
rotation: 35,
blur: 2,
quality: 5,
distance: 20,
alpha: 0.7,
color: 0x000000
}]);
Visual check: User marked this example working on a Token in Foundry v14 on 2026-10-08. Other images and target types still need their own visual check.
zapshadow
Remove Shadow. Removes semi-transparent pixels, such as a shadow baked into token art.
Default zOrder 10
| Parameter | Type | Default | Animate | Description |
|---|---|---|---|---|
alphaTolerance |
number | 0.8 |
yes | Pixels with an opacity below this value (0–1) are removed. |
await leanFX.addUpdateFiltersOnSelected([{filterType: "zapshadow", filterId: "noshadow", alphaTolerance: 0.45}]);
Visual check: User marked this example working on a Token in Foundry v14 on 2026-10-08. Other images and target types still need their own visual check.
Examples run on the selected placeables; see API Reference for other targets.