Cel shading (not cell shading with 2 L's, as I recently found out) is an art style that mimics the look of cartoons. This is a technique that is not strictly limited to 3D modeling as this effect can be replicated in digital art, paintings, and on miniature sculptures.
Cel shading is a highly appealing style popularised by 2003’s Legend of Zelda The Windwaker, which, when in combination with its more cartoony character models, made a perfect match for the cel-shading style.
In more recent memory the Emmy award-winning animated show Arcane, also made use of this technique to create the perfect blend between videogame-like stylization and comic book realism. This is all to say that cel shading is a versatile technique used in games, comics, and TV shows, which we can replicate in Blender 3D.
Check out this guide on Ngons in Blender!
Cel-Shader Level 1
Let’s create a cel shader in Blender. So that we can best see how our cel shader is working, we will add in a few more objects so that we can see its effect on differing topologies. So, in your scene, press shift + A, and add in a UV sphere and a monkey.
For the UV sphere, we can shade smooth, by right-clicking, pressing the W key, and selecting ‘Shade Smooth’.
The next step is to expand the timeline and change it to the shader editor so that we can add our materials.
To see how we are affecting our materials, we should use the material preview mode. We can toggle this by pressing the Z key in the viewport, and then selecting material preview.
We’ll select the UV sphere, and add a new material. Our first step will be to delete the principled BSDF by selecting it and pressing the delete key. This results in the material appearing black, since there is nothing plugged into the material output node.
Before we continue, we should add the material to the other two objects. We can do this quickly by selecting the cube and the monkey, then selecting the UV-sphere last. Then, press CRTL + L which will bring up the link properties tab. By selecting link materials, the material from the UV-sphere will be applied to the other two.
The first node that we will add is the diffuse BSDF. Press shift + A while in the shader editor tab, and use the search function and locate the diffuse BSDF. Once it has been added, plug it into the surface socket of the material output node.
Next, we will add a ‘Shader to RGB’ node followed by the ‘Color Ramp’ node, using the shift + A function once again, and search for each node.
These are all the nodes that we will need for this basic cel shader. As of now, the nodes aren’t producing the toon style that we are looking for. This all lies in the color ramp, so we will need to change it to get the effect that we want.
By changing the color of the first handle of the color ramp from black to blue (any color will suffice), you can see the gradient effect that is being produced.
We can also change the color of the white side by selecting the white handle in the color ramp, and then selecting the bar at the bottom of the node. As this will be the lighter region, it makes sense to select a lighter shade of our first color
Although this is a nice effect but is not the cel-shaded effect that we’re looking for. The cel-shaded look relies on distinct points of separation between the colors, not a smooth gradient.
One way to remedy this is by opening the drop-down menu by selecting the ‘Linear’ button on the Colour Ramp. We will change the color ramp interpolation settings from Linear to Constant.
Using constant has provided us with the sharp cutoff that we need, however, it has made our objects one color. This requires the simple fix of dragging the right-most node back towards the center.
The toon shader effect can be enhanced by adding another color in between the two we currently have. By pressing the plus icon on the color ramp, we can add another slider. Then, we can change the color to make it a blend between the two existing colors.
And that is our basic cel shader complete!
If we enter rendered mode by pressing the Z key, we can see how our materials interact with light.
Once in rendered mode, let’s select the light in the scene and change it from ‘point’ to ‘area’.
We’ll need to increase the power of the light so that the cel-shaded effect is more noticeable. Increase it to a power of 400 W, then we can point our light at the object by pressing CTRL + T and moving the mouse towards the object.
As you can see, the cel shader reacts to the light, and whenever we move the light, the shader will respond accordingly.
However, one issue is that if we change the color of our light, the materials will not change. You can see that the cube on the right with the default shader reacts to the change in light color, but not the other materials.
This may cause issues, particularly if you want to use this shader in different contexts for video games or animations, so let’s move on to a more advanced form of this cel-shader.
Cel Shader, Level 2
So we have our basic cel-shader, but now, we want it to react to the lights in our scene. We will use most of the same nodes but with a few new ones too. This node setup was adapted by Comfee Mug on YouTube.
We’ll remove the existing cel-shader from the sphere by pressing the minus button in the material properties tab, then we can press the plus icon to add in a new material slot. Then we press ‘New’ and name our new material.
We can apply the materials to the other two objects, using the same method as seen previously. Select the cube and the monkey and select the sphere last. Then press CTRL + L to link the materials.
In the shader editor, we can add the following nodes by pressing shift + A and searching for them. Add in a ‘Diffuse BSDF’, ‘Shader to RBG’, two ‘Separate Color’ nodes set to HSV, ‘Color Ramp’, and finally a ‘Combine Color’ node. Arrange them in the order that you see in the image below.
Next, we will combine the nodes in the manner that you see below.
Finally, to properly see the effect, we can add a grey scale to the color ramp and set the interpolation from linear to constant. This will produce the cel-shaded effect that we have seen previously.
Now if we enter rendered mode once more, we can see that our light affects the colour of our cel-shaded materials.
One useful feature of this setup is that by changing the diffuse color, the rest of the shader will be adjusted. This will mean you will save time by not having to manually adjust each of the bars of the color ramp.
Now you have all that you need to create cel-shaded models in Blender, have fun!