Updated for Blender Version: 3.1
What do you mean, “Toon Shader”?
A toon shader is a shader that is often more “flat” and does not have the same physical characteristics of a PBR material. Think of any cartoon you watched as a child. The characters were generally drawn and designed to be made up of solid blocks of flat color. Adding this effect to 3D objects can create a very unique style.
Cool. How do I create one for myself?
A basic toon shader is very easy to create in Blender. Let’s start by adding a simple Suzanne to the scene with Shift+A > Mesh > Monkey. Also, it is important to make sure you are in Eevee render engine.
With Suzanne selected, click the “Shading” tab along the top of the screen. This will open up the Shader Editor below the 3D viewport. Click “New” to add a new material to Suzanne. Delete the Principled BSDF shader node. We won’t need it here.
In the Shader Editor, press Shift + A, hover over Shader, and add a Diffuse BSDF shader. Add another node by pressing Shift + A, hover over Converter and click Shader to RGB. Connect the Diffuse output socket to the Shader to RGB “Shader” input socket, then connect the Shader to RGB “Color” output socket to the Material Output “Surface” socket. Head back to the Converter nodes with Shift+A > Converter and click on ColorRamp. Drop the color ramp between the Shader to RGB node and the Material Output node. This will allow you to dial in the colors and shading of the material. In the ColorRamp node, press the dropdown that says “Linear” and select “Constant”. Your material will turn black, but don’t worry – all you need to do is grab the white tab on the ColorRamp slider and slide it to the left.
If you check out the 3D viewport in “Shading” mode, you should see some nice harsh shadows on Suzanne something like this:
Add Another Level
Use the color ramp to add some colors. Use the + button in the ColorRamp to add another color tab. You can add as many color tabs as you’d like. Play around and see what looks good to you. Here’s a gold Suzanne:
Final Touch
One more final touch adds just a little something extra to your toon shader. Follow the same steps as you did above in the same material – add a Diffuse BSDF node, a Shader to RGB node, and ColorRamp node, and connect them in that order. Now press Shift+A again, hover over Input and add a Fresnel node. Place it to the left of the Diffuse BSDF node that you just added and connect the “Factor” socket to the “Color” input on the Diffuse node. Add one final node to bring it all together with Shift+A > Color > MixRGB. Place the MixRGB between the ColorRamps and the Material Output nodes. Press the dropdown and change the mix type to Add. Connect the top ColorRamp (with the Fresnel node) to the “Color1” socket and connect the original ColorRamp (with the customized colors) to the bottom Color2 socket. Use the Fresnel node’s “IOR” setting to dial in the specular color of the shader.