Step-by-step

Tutorials

Five short walkthroughs covering the most common workflows.

1. First cel-shaded actor in 30 seconds

Goal: take any actor in your level and make it cel-shaded.

1
Enable the project setting

Project Settings → Rendering → Custom Depth-Stencil Pass = Enabled with Stencil. (Restart not required.)

2
Pick an actor

Select any static or skeletal mesh in your level. The Details panel should show its mesh component.

3
Tick CustomDepth

In the mesh component's Details → Rendering section:

  • ☑ Render CustomDepth Pass
  • CustomDepth Stencil Value = 1
4
Done

The actor is now cel-shaded. Move the camera around — you'll see hard band cutoffs on shadow/light boundaries plus an outline at silhouettes.

2. Indoor / outdoor zones with ACelshadingVolume

Goal: a stronger style indoors, softer outdoors, with smooth blending.

1
Place an indoor volume

Place Actors → All Classes → drag CelshadingVolume into your level, positioned over the indoor area. Untick bUnbound and scale the box to cover the room. Set SpatialFalloff = 200 cm.

2
Tune the indoor look

In the volume's Details panel, expand Cel Look → Banding:

  • Tick ShadowCurve → set 3.0 (deeper shadows).
  • Tick ShadowEntryPoint → set 0.40 (more area reads as shadow).
3
Place an outdoor volume

Drag a second CelshadingVolume. Leave bUnbound = true (it's the global default). Tick HighlightCutoff → set 4.5 (admit more bright sun into the bands).

4
Set priority

Set the indoor volume's BlendPriority = 10, the outdoor's = 0. Higher priority writes last, so the indoor style overrides where the camera enters the box.

3. Sharing the CustomStencil byte with other plugins

Goal: coexist with another plugin that uses CustomStencil for outline / highlight.

1
Pick a single bit for cel-shading

The CustomStencil texture is a single 8-bit value. Reserve one bit for cel-shading — e.g. bit 7 (128). The other 7 bits remain free for other features.

2
Update CVars

Open the console (~) and run:

r.Celshading.CelStencilMask 128
r.Celshading.CelStencilRef      128

Or persist them via DefaultEngine.ini:

[/Script/Engine.RendererSettings]
r.Celshading.CelStencilMask=128
r.Celshading.CelStencilRef=128
3
Tag actors

For each cel-shaded actor, set CustomDepth Stencil Value = 128. For actors using the other plugin's bits, leave them ≤ 127.

4. Preset workflow

Goal: save a tuned look as a reusable asset and apply it to other volumes.

1
Tune a volume

Drop a CelshadingVolume, override the fields you want (Style + Lighting). The "Active Preset" field can stay empty for now.

2
Save as preset

Click the Save As Preset… button on the volume's Details panel. Pick a folder (e.g. /Game/CelshadingPresets/) and a name. The preset asset is created and auto-linked as the volume's Active Preset.

3
Apply on another volume

On a different volume, set Active Preset to your saved asset and click Apply Preset. The preset's Style + Lighting are copied into the volume (one-shot copy — not a live binding). Edit either independently afterwards.

5. Sun / Sky / Fog overrides per zone

Goal: drop into a cave volume that changes the sun direction and densifies the fog.

1
Place a bounded volume

Drop a CelshadingVolume over the cave entrance, scale the box, untick bUnbound, set SpatialFalloff = 500 cm.

2
Override fog density

In Atmosphere → Atmospheric Fog:

  • Tick AtmosFogDensity → set 0.3
  • Tick AtmosFogScatterColor → pick a cool blue
3
Override sun rotation

In Atmosphere → Sun:

  • Tick SunRotation → set Pitch = -80 (sun nearly straight down)
  • Tick SunIntensity → set 3.0 (dimmer sun for cave)
4
Verify in editor

Move the editor camera into the volume — overrides apply live (the subsystem ticks in the editor). Move out — sun returns to its original orientation, fog returns to its original density.