UE5 / Production Note

Anime Outline / Rim Control for UE5

Production notes for keeping silhouette, rim light, and outline width controlled across characters, camera distance, and shot lighting.

UE5 first

Production Note

UE5 is the source of truth here. Keep the graph readable first, then branch into project-specific versions only when the base is proven.

01

Goal

Target: Production notes for keeping silhouette, rim light, and outline width controlled across characters, camera distance, and shot lighting.

02

Use Cases

Production NoteAnime charactersFor character looks where outline and rim need to support the pose instead of flattening it.
Production NoteReadable silhouettesGood when the background is busy and the character edge needs one controlled safety pass.
Production NoteScenes with busy backgroundsUse to protect readability without cranking the whole material brighter.

03

Core Blocks

1. Outline width

Use this to protect the silhouette first. Edge response should help the form read before it becomes decoration.

Why: rims and contact lines are usually the cheapest readability fix in a busy scene.

2. Distance scaling

Treat this as a named building block, not a hidden math island. It should be easy to preview, tune, and reuse.

Why: small readable parts make the final graph easier to review and extend.

3. Rim mask

Use this to protect the silhouette first. Edge response should help the form read before it becomes decoration.

Why: rims and contact lines are usually the cheapest readability fix in a busy scene.

4. Color control

Separate color choice from brightness. It keeps palette changes safe when the effect moves between levels.

Why: artists can rebalance mood without accidentally changing the mask logic.

5. Per-character overrides

Treat this as a named building block, not a hidden math island. It should be easy to preview, tune, and reuse.

Why: small readable parts make the final graph easier to review and extend.

04

Node Graph Flow

Input dataShape signalAnimateRemap colorControl alphaOutput

Start from the signal

Get a clean black-and-white read first; color, glow, and distortion should only support that read.

Expose decisions

Every exposed value should answer a real art question: how fast, how wide, how bright, how soft.

05

HLSL Equivalent

float authored = SampleMask(maskUV).r;
float lightTerm = saturate(dot(faceForward, mainLightDir));
float stableShadow = smoothstep(shadowStart, shadowEnd, lerp(authored, lightTerm, lightBlend));
return lerp(shadowColor, litColor, stableShadow);

06

Artist Controls

07

Production Notes

Production check: keep the read clean, then measure cost in the scene where it actually ships.
  • Preview masks by themselves before judging the finished color.
  • Name parameters the way an artist would search for them in a Material Instance.
  • Keep a cheaper instance for background, crowd, or repeated usage.
  • Write down the gotchas while they are still fresh.