You need to modify the normalmap shader (it's always a shader) to round the light values to certain steps (up to you where you place them). Another method would be to use the light-to-normal vector to determine the texture coordinate on an envmap that defines the light "falloff". A third option I thought about was to have a palletted image and a separate full color image that's the height of the pallette and has the different colors the pixel will have in all 256 (or if you're daring, up to 2048) light levels, the shader would use the color index of the texture pixel as the vertical position and the light level/angle as the horizontal one to look up the color of the pixel.
Replies
to get really better cartoonish cel shading you need a pixel shader