Skip to content
Techniques & Technology

Cel Shading

3D with cartoon style

Cel shading renders 3D graphics with flat colours and hard edges, mimicking hand-drawn animation and creating distinctive visual styles.

cross-platform graphics3dstyle 2000–present

Overview

Cel shading (or toon shading) applies non-photorealistic rendering to 3D graphics, creating the appearance of hand-drawn animation. Instead of smooth gradients, surfaces show flat colour bands separated by hard edges. The technique sidesteps the "uncanny valley" problem of photo-realistic rendering by deliberately leaning into the artificial — and ages much better, because hand-drawn-style art doesn't look dated the way 1999's "realism" does.

Games like Jet Set Radio (Sega, 2000) and The Legend of Zelda: The Wind Waker (Nintendo, 2002) proved cel shading wasn't just a gimmick — it created timeless visual styles that still look great today.

Fast facts

  • Alternative names: toon shading, NPR (non-photorealistic rendering), comic-book shading.
  • Technique: Quantised lighting + edge detection.
  • Pioneer: Fear Effect (Eidos, 1999) used early cel-shading; Jet Set Radio (2000) made it mainstream.
  • Defining use: Wind Waker (2002) — the largest-scale cel-shading commitment of its era.
  • Modern status: Established art style option used by countless modern games.

Technical approach

Two core ingredients:

Quantised lighting

In standard shading, light intensity varies smoothly from fully-lit (1.0) to fully-shadowed (0.0), producing gradient surfaces. Cel shading quantises this — instead of a smooth gradient, the lighting maps to 2-5 discrete bands:

standard: light = max(0, dot(normal, light_direction))    // smooth 0.0 to 1.0
cel:      light = quantise(light, [0.2, 0.5, 0.9])         // → 0.2, 0.5, or 0.9 only

The result: surfaces show flat-coloured bands rather than gradients, with hard transitions between them. The number of bands and their thresholds are art-direction choices.

Edge detection

Cel-shaded objects need outlines — the dark lines around silhouettes and creases that make hand-drawn art readable. Two approaches:

MethodImplementation
Inverted backface renderRender each model twice: once normally, once scaled-up, flipped, and in solid black. The black version peeks out at silhouette edges. Standard 2000s technique.
Sobel / depth-based edge filterPost-process: apply edge detection on the depth buffer or normal buffer. Modern approach.

Both methods produce the characteristic dark outlines.

Notable implementations

GameYearStudioNotes
Fear Effect1999EidosOften cited as the first commercial 3D cel-shaded game
Jet Set Radio2000Sega/SmilebitSkatepunk Tokyo aesthetic; defined the look for action games
Cel Damage2001Pseudo InteractiveComic-book vehicular combat
The Legend of Zelda: The Wind Waker2002NintendoMajor Nintendo commitment to the style; controversial at launch, beloved later
XIII2003Ubisoft ParisComic-book FPS adaptation of the Belgian comic
Killer72005Grasshopper ManufactureSuda51's idiosyncratic cel-shaded action
Ōkami2006Clover StudioSumi-e ink-painting style — cel-shaded with brush-stroke aesthetic
No More Heroes2007GrasshopperWii cel-shaded action
Borderlands2009Gearbox"Concept-art" cel-shaded FPS — defined a new sub-genre
The Wonderful 1012013PlatinumHeavy cel-shading + bright colours
Persona 52016AtlusUI + cel-shaded character animations
Spider-Man: Into the Spider-Verse (film, but technique-relevant)2018Sony AnimationPushed cel-shading techniques into film
Hi-Fi Rush2023Tango GameworksModern cel-shaded action with rhythm gameplay

Why it endures

Cel shading remains popular because:

  • Ages well — Wind Waker (2002) looks excellent today; many of its photo-realistic contemporaries look badly dated.
  • Stylistic identity — distinct from photo-realistic competition; instantly recognisable.
  • Performance — quantised lighting is cheaper than physically-based rendering.
  • Animation forgiveness — flat colours hide model imperfections that smooth shading exposes.
  • Anime / manga aesthetic — directly compatible with the visual language of those mediums (huge market in Japan, growing globally).

Variations

Modern non-photorealistic rendering goes well beyond simple cel shading:

StyleNotable for
Sumi-e ink-paintingŌkami — Japanese brush-painting aesthetic
Comic-bookXIII, Borderlands, Comix Zone (2D) — halftone, panel borders, speech-bubble integration
WatercolourDrawn to Life, Eastward — watercolour-style textures
Pencil-drawingMark of the Ninja, sections of Don't Starve
PainterlyDisney's The Lion King (1994 SNES, an early softer style); modern painterly games
Anime celTales of series, Genshin Impact, Persona 5

The umbrella term NPR (non-photorealistic rendering) covers all these — cel shading is the most common subset.

Modern implementation

In modern shader-based engines, cel shading is typically implemented in fragment shaders:

// Simplified GLSL fragment shader for cel shading
float NdotL = max(dot(normal, light_dir), 0.0);
float band = 0.0;
if (NdotL > 0.95)      band = 1.0;     // Bright
else if (NdotL > 0.5)  band = 0.7;     // Mid
else if (NdotL > 0.25) band = 0.4;     // Shadow
else                    band = 0.1;     // Dark shadow

vec3 final_colour = base_colour * band;

Plus a separate edge-detection pass for outlines. Real production shaders are more sophisticated (multiple light sources, rim lighting, shadow softening) but the core idea is exactly this.

See also