Adeline Cook

Adeline Cook  /  Work  /  Advanced Cel Shader

Advanced Cel Shader.

An outline shader for Unreal Engine. Adeline worked out the technique on her own time, packaged it, and sold and supported it on the Unreal Marketplace for ten years. Epic Games acquired it.

2014 – present · Unreal Engine Marketplace · Independent

What it is

A real-time cel shader.

An outline pass has to hold the same line weight whether the object is two metres away or fifty, and it has to not crawl or flicker while the camera moves. It also has to fit into a fraction of a millisecond, because it is competing with everything else in the frame.

Adeline wrote the edge-detection pass the Advanced Cel Shader is built on, on her own time, and turned it into a package other Unreal developers could drop into a project and configure without reading the shader.

Maintenance

Ten years of engine releases.

Most of the work was not the first version. Unreal's renderer changed repeatedly over UE4's life, and customers had games in production sitting on top of the pack, so each engine release meant re-testing it and fixing what had broken.

Evidence

Timeline.

2014

Published to the Unreal Marketplace

It went on sale as a package for Unreal developers building their own titles. The public repository dates from August 2014.

Through the UE4 era

Ported to mobile

Mobile GPUs don't have the buffer budget the desktop version assumed. Getting the shader running on mobile meant cutting it down to a much smaller buffer set without losing the technique.

~2017

Acquired by Epic Games

Epic Games acquired the shader and made it free forever, as part of the Marketplace's Permanent Free collection. The original repository is still public, with the stars and forks it picked up along the way.

The repository

80+ stars and 30+ forks from other developers. Adeline weights the forks higher — those are people who took the source and modified it for their own project.

The technique

How the edge detection works.

The edge detection runs as two separate, parameterised passes — one over depth, one over colour — tuned independently and combined. Unreal's own stencil-based outlines at the time were limited to one material per object and capped at 255 objects on screen, with no antialiasing; depth-based edges are antialiased by construction, which stencil outlines are not.

The hard part was the math. The lines come from a chain of boolean tests over depth and occlusion, and by design they don't belong to any one object, so convolution can offset and reshape them. That makes it closer to an art shader than a strict outline shader — most of the development time went into that chain of tests, not the render pass itself.

It shipped in a number of indie titles, and appeared, uncredited, in the background shaders of Street Fighter V.

Sales

150,000+ paid sales on the Marketplace, and roughly ten times that many downloads since it went free.