You might have heard about Blender. It’s a super complex piece of open source 3D software that can be quite overwhelming to just look at. Trust me, I know.
However, after pushing through the initial hardships of using this software, you finally start to understand what some of the knows, check boxes and settings actually does. This is when it actually becomes fun, and I highly recommend trying it out if you’re even just a tiny bit interested in 3D modeling and/or design.
To be honest, I’m actually not really sure how to define a toon shader (aka. a cel shader). What it does however, is that it replaces the traditional smooth 3D light bounces of materials and instead uses one or multiple solid colors. This gives a scene the “cartoony” or illustration-like look.
This style of 3D design is, in my opinion, both easier to understand, easier to learn and makes it easier to produce cool results without having to learn all the traditional 3D things such as real-life lighting, materials, texturing etc. It’s also exactly the style I’d like to be able to create stuff in.
As you can see in the examples above, the left one uses custom toon shaders rendered in real time using Eeve (the render engine), while the right uses really basic Principled BSDF shaders and is rendered using 50 samples in Cycles (another render engine).
Colors are sharper, shadows are sharper, all the “real world” qualities disappear and it looks more like a 2D illustration. Beautiful.
Okay, let’s go through a simple toon shader. Please note that you probably should learn the basics of Blender before reading this. Ooor, you could watch any of the following videos:
Okay, let’s go. As you can see, we’re in the shader node editor tab in blender and this is where the magic happens.
Let’s go through each node one by one.
We start off with a Diffuse BSDF node. Why do we do this? Not sure. The Blender documentation describes this node as “The Diffuse BSDF node is used to add Lambertian and Oren-Nayar diffuse reflection."
It lacks every BSDF-setting except for color and roughness, both of which you don’t have to change from the preset values.
This node is needed to apply further settings to the output of the Diffuse BSDF. You can see it as a simple middleman between the BSDF and the ColorRamp.
The ColorRamp is where the magic happens. This one applies the colors of whatever object you’re applying the shader / material on.
The preset contains a simple linear gradient between black and white. This is not what we want, but instead a constant color change without easing (as seen in the screenshot above).
Therefore we need to change the default RGB setting from “linear” to “constant”.
As you can see in the screenshot above, the ColorRamp has a hard break (constant) between darker green and lighter green. These colors are reflected in the tennis court floor in the scene.
The material output is needed for the shader to be visible in the scene. Very important!
By adding / removing / changing colors in the ColorRamp, you’re able to change all colors the object will display. And I mean every color.
By dragging the breakpoint between colors left and right, you’re able to decide how the object reacts to lights and which colors will be displayed where depending on the lights in the scene.
All objects casts shadows. The color of these shadows are also decided in the ColorRamp.
For example, a floor plane could be yellow but cast blue shadows. A tennis court could be light green and cast darker green shadows. The possibilities are endless.
This is crazy example, but now all shadows on the court floor have switched to purple.
If you want to know some more tips on camera settings, scene settings and rendering settings for toon shaded illustrations, feel free to read this rendering settings guide or maybe the post processing / compositing guide.
There are still some problems I haven’t really found a solution to (jagged shadows for example), but I’ll update stuff as I learn new stuff.