LAUNCH OFFER€25 in free credits when you sign up, no card requiredClaim the offer
    TURNA, Blender render farm

    Cel shading in Blender: build a toon shader step by step

    T
    TURNA technical team
    25 October 2026
    9 min

    Short answer

    Cel shading (or cell shading) is a non-photorealistic render style that replaces the shading gradient with two or three flat areas of colour. In Blender, with EEVEE, you connect a Diffuse BSDF to a Shader to RGB node, then to a Color Ramp set to Constant interpolation. In Cycles, the Toon BSDF node gives a more limited equivalent. The outline is added with Solidify, Freestyle or Line Art.

    A cartoon character has no gradual shadow: the light stops abruptly, and the dark area is a colour in its own right. Reproducing that look on a 3D model means replacing Blender's realistic lighting calculation with steps. This guide gives the exact settings in EEVEE and in Cycles, the three ways to add an outline, and the mistakes that spoil the result.

    What is cel shading?

    Cel shading is a non-photorealistic rendering (NPR) technique. Instead of a shadow that darkens gradually, the lighting is reduced to a few values: one colour for the lit part, one for the shadow, sometimes a third for a highlight. The change from one to the next is a hard boundary. A dark outline often underlines the silhouette.

    Three elements therefore make a cel-shaded render: sharp-edged shadows, flat areas of colour and outlines. A stylised render may keep only two of them, and many do without an outline.

    Cel shading, cell shading, toon shading: one technique

    The name comes from "cels", the transparent celluloid sheets that traditional cartoons were painted on. The spelling cell shading, with two Ls, is a widespread variant, and you will also find cel-shading, cell-shading and cellshading. Toon shading means the same thing. In Blender, the material that produces the effect is commonly called a toon shader.

    Creating a toon shader in EEVEE

    EEVEE has a node that Cycles lacks: Shader to RGB. It converts the result of a lit shader into a plain colour, which you can then rework like any other value. The Blender manual presents it as the tool for non-photorealistic rendering, with the example of a Color Ramp placed after a Diffuse BSDF.

    1. Select the object, open the Shading workspace and create a new material.
    2. Replace the Principled BSDF with a Diffuse BSDF. It only returns diffuse light, with no reflection, which gives a clean base.
    3. Add a Shader to RGB node (Shift+A, then search) and connect the BSDF output of the Diffuse node to its Shader input.
    4. Add a Color Ramp node and connect the Color output of Shader to RGB to its Factor input.
    5. In the Color Ramp, change the interpolation from Linear to Constant. Each colour stop becomes a flat area, with no gradient between them.
    6. Connect the Color output of the Color Ramp to the Color input of an Emission node, itself connected to the material output. The object then shows exactly the colours of the Color Ramp.

    Then set the stops. An input value of 0 gives the left-hand colour and a value of 1 the right-hand one, so the left-hand stop colours the least lit areas. Two stops give a shadow and a light; a third, placed near the right and lighter, adds a highlight. The Distribute Stops from Left command spaces the stops evenly, which the manual flags as useful mainly in Constant mode.

    Choose the shadow colour with care. A shadow made by simply darkening the base colour looks dull; a slightly shifted hue, a little cooler or more saturated, brings the render closer to an illustration.

    The manual warns that this setup breaks the physically based lighting calculation. The BSDF placed before Shader to RGB becomes invisible to some effects, including screen-space reflections and subsurface scattering, and the render passes do not give the expected result. Keep this material for surfaces that really need to be stylised.

    Cel shading in Cycles: the Toon BSDF node

    Shader to RGB is EEVEE only. Cycles offers the Toon BSDF instead, which is available in Cycles only. It creates a diffuse or glossy surface (Component setting, Diffuse or Glossy) with a cartoon-style lighting effect.

    • Size, between 0 and 1, sets the angle of the area that receives light, from 0 to 90 degrees.
    • Smooth is the angle over which the transition softens. At 0, the boundary between light and shadow is sharp.

    The Toon BSDF calculates the shadow from the lighting: you do not choose its hue freely as you do with a Color Ramp. To add a sharp highlight, combine a Toon BSDF in Diffuse mode with a second one in Glossy mode using an Add Shader node. If you want colour bands you choose freely, EEVEE is the engine to use.

    Adding outlines

    The outline is what makes a stylised render pass for a drawing. Blender offers three methods, which do not draw the same lines and do not cost the same render time.

    The inverted hull with Solidify

    1. Add a second material slot to the object, with a black material.
    2. Add a Solidify modifier. Give it a small thickness (Thickness), set Offset to 1 so that the hull forms on the outside of the surface, tick Flip Normals, and set Material Offset to 1 so that the new geometry takes the black material.
    3. In the settings of the black material, turn on Backface Culling (Camera option), which hides the back faces of polygons.

    The part of the hull facing the camera is hidden; only the rim that sticks out beyond the silhouette stays visible and draws the outline. The manual states that the thickness is calculated in the object's local coordinates: on an object with a non-uniform scale, the line varies from one side to the other. Apply the scale (Ctrl+A, Scale) before setting the thickness. This method only draws the outer contour, not the inner creases.

    Freestyle

    Freestyle is a line rendering engine built into Blender. You turn it on with the Freestyle checkbox in the Render Properties, and set it up in the View Layer Properties: edge detection (including the angle of sharp edges, Crease Angle, and material boundaries), then one or more Line Sets, each tied to a line style that sets colour, transparency and thickness. It draws outlines and inner creases. The manual points out that it needs a lot of memory, since it loads all the meshes of the View Layer at once, and that its lines carry no depth information.

    The Line Art modifier

    Line Art generates Grease Pencil strokes from the whole scene, a collection or an object, only on the parts visible from the active camera, which is therefore required. The strokes form a Grease Pencil object that you can touch up and animate. Each Line Art modifier runs its own occlusion calculation: stacking several of them to stylise different parts makes evaluation noticeably longer. The Grease Pencil in Blender guide introduces this type of object.

    Lighting and colour management

    Cel shading does not cope well with busy lighting. One main lamp, often a Sun, gives a readable shadow boundary. The Sun's Angle setting is its apparent size: the smaller it is, the sharper the edge of cast shadows.

    Also check the view transform, in the Render Properties, Color Management panel. AgX desaturates strongly exposed colours to imitate the response of film, which alters flat colours chosen by hand. The Standard view, which adds no conversion other than the one for the display, is the one the manual recommends for non-photorealistic renders. With it, the colour chosen in the Color Ramp is the colour that comes out in the image.

    Common mistakes

    • Gradients remain: the Color Ramp is still set to Linear interpolation. Switch it to Constant.
    • The shadow flickers or looks noisy in EEVEE: some effects need several samples to converge, and a Color Ramp applied to a noisy value does not necessarily give a smooth result. Increase the render samples or simplify the lighting.
    • The toon shader does nothing in Cycles: Shader to RGB is EEVEE only. Change engine or switch to the Toon BSDF.
    • The Solidify outline is thick on one side and thin on the other: the object's scale has not been applied.
    • The colours are duller than the ones you chose: the view transform is still on AgX or Filmic. Switch to Standard.

    Rendering a cel-shaded animation

    Even when one frame renders in a few seconds, an animation has a great many of them: at 24 frames per second, one minute is 1,440 frames. Freestyle, Line Art and anti-aliasing add time to each one. Time a representative frame before starting the sequence, and save an image sequence rather than a video, as the guide on how to render an animation in Blender explains. For choosing the engine and turning on the graphics card, see the guide how to render in Blender.

    Frequently asked questions

    What is cel shading?

    Cel shading, also written cell shading or called toon shading, is a non-photorealistic render style that replaces the shading gradient with a few flat areas of colour separated by sharp boundaries, often with a dark outline. It imitates the look of cartoons and manga.

    Cel shading or cell shading: which spelling?

    Both refer to the same technique. The name comes from "cels", the celluloid sheets that cartoons were painted on; cell shading, with two Ls, is a very common variant. In Blender, the material that produces the effect is often called a toon shader.

    How do you make a toon shader in Blender?

    In EEVEE, connect a Diffuse BSDF to a Shader to RGB node, then to a Color Ramp set to Constant interpolation, and send the resulting colour to an Emission node connected to the material output. In Cycles, where Shader to RGB does not exist, start from the Toon BSDF node.

    Does cel shading work in Cycles?

    Partly. The Shader to RGB node is EEVEE only. Cycles offers the Toon BSDF, which gives a sharp boundary between light and shadow, adjustable with Size and Smooth, but without a free choice of shadow colour. For colour bands you choose freely, EEVEE is the engine to use.

    How do you add an outline in cel shading?

    Three methods: the inverted hull (a Solidify modifier with flipped normals and a black material with Backface Culling), Freestyle, turned on in the Render Properties, or the Grease Pencil Line Art modifier, which calculates the lines seen from the active camera.

    Rendering the animation on TURNA

    When a scene is already well optimised and the frame count is what takes the time, the remaining lever is rendering several frames at once. TURNA does this for Blender: an add-on (Blender 4.0 to 5.2, Cycles and Eevee) sends the scene in one click, and the frames are split across 1, 2, 4 or 8 GPUs in parallel, RTX 5090 first and RTX 4090 when none is free. The add-on shows the estimated cost before anything starts. Prices start at €2.90 per hour, billed on the time actually used, with a 30-second minimum, and new accounts get €25 of free credit. A single still image is still rendered by one machine, so the gain is on animations. Tiers and worked examples are on the Blender render farm page.

    To find out how long a sequence will take before you start it, the render time calculator works from the time of one frame and the number of frames.