UE5 / Style Direction / Character Shading

Anime Style / Cel Shader for UE5

A production-oriented style guide for clean cel bands, stable shadow color, readable silhouettes, and scalable anime character materials.

Style anchor

What this page decides

This page defines the common anime shading language. Skin, hair, eyes, outline, and face-shadow pages should branch from this baseline instead of inventing separate looks.

01

Visual Target

Goal: create a clean anime shading baseline where the character reads clearly from the camera, with stable light/shadow bands, controlled highlight color, and a silhouette that does not depend on realistic PBR behavior.
Anime cel shader visual anchor.

This image is the style anchor: simple banding, readable face planes, restrained specular, and a dark silhouette that still separates from the background.

02

Approach Choice

Material-based cel shader

Best when the character needs per-asset control: skin can use a face shadow map, hair can use flow highlights, and eyes can keep their own highlight hierarchy.

  • More control per material.
  • Better for hero characters.
  • Requires consistent authoring across assets.

Post-process cel shader

Best when the whole scene needs a quick stylized pass. It is fast to apply, but fog, specular, reflections, sky, and GI can create artifacts.

  • Fast global lookdev.
  • Good for prototypes and environment-wide style.
  • Less precise for faces and character-specific rules.
Production choice: use material-based logic for hero characters, then use post-process only as a scene-level support layer if needed.

03

Graph Order

Normal or authored mask Main light direction Dot product Band threshold Color remap Spec / rim / outline

1. Build the lighting signal

Start with a dot product between the surface normal and the main light direction, or use authored masks for areas that need more stable anime control.

2. Cut the signal into readable bands

Use threshold and softness controls to split the signal into lit, mid, and shadow zones. The band should be easy to preview in grayscale.

3. Remap bands to art-directed color

Do not rely on physically correct darkening only. Anime shadows often need hue control, especially on skin and face planes.

4. Add specular, rim, and outline as separate layers

Keep these layers optional. They should support silhouette and focal point, not fight the primary light/shadow read.

04

Artist Controls

05

HLSL Sketch

float ndl = saturate(dot(normalize(WorldNormal), normalize(MainLightDir)));
float band = smoothstep(ShadowThreshold, HighlightThreshold, ndl);

float3 baseBand = lerp(ShadowColor, LitColor, band);

float viewFacing = saturate(dot(normalize(ViewDir), normalize(WorldNormal)));
float rim = pow(1.0 - viewFacing, RimPower) * RimIntensity;

float3 finalColor = baseBand + rim * RimColor;
return finalColor;

06

Failure Cases

Shadow bands look noisy

The lighting signal is unstable. Check normals, face masks, indirect light, specular contribution, and whether the band threshold is too sharp.

Face lighting breaks expression

Use an authored face shadow map or face-specific mask. Raw normal lighting often fails on anime faces because the planes are intentionally simplified.

Specular looks too realistic

Reduce or replace PBR-style specular with a stylized highlight mask. The highlight should support the drawing, not reveal surface realism.

Outline or rim becomes heavy

Scale outline/rim by distance, character importance, and background complexity. The silhouette layer should not flatten the entire character.

07

Handoff Notes

Interview angle: this shader is not only about making an anime look. The production value is separating reusable style language from asset-specific controls.
  • Keep skin, hair, and eyes as child pages so each asset type can add its own controls without changing the base style.
  • Expose artist-facing parameters in Material Instances, but keep debug previews available in the master graph.
  • Profile before optimizing, but disable unnecessary realistic lighting behavior if it fights the stylized target.