Juandre (Jay) Labuschagne Shows How to Make a More Versatile Cel Shader Than Cycles Toon.
Blender Cycles has a toon shader that is easy to use and offers some excellent results. If you are looking for a little more control and flexibility though, you might find that it falls a bit short. Building a custom cel shader may offer you the power that you seek. Follow along with this tutorial from Juandre (Jay) Labuschagne that shows how you can create your own.
This Cel Shader setup uses Blender’s internal render engine; it doesn’t use Cycles or Eevee, blender’s new viewport technology. Using Blender Internal doesn’t necessarily mean that you will be sacrificing quality, but you can think of it as gaining some speed and flexibility at the same time. The techniques shown here are not new, you can see a similar node setup with other applications where you can define and replace lighting information with color, typically by some sampling.