Shading modes and shaders

There is solid shading mode and smooth shading mode.
I would like to know if it is possible to modify or tweak the solid shading mode so the brightness of the polygon is not calculated based on the poly normal vs lightsource ange, but rather based on angle range.
So i could have like 0-45=(1,1,1,1),45-90=(0.5,0.5,0.5,1) and 90+=(0,0,0,1)
And of course definig as many range steps as i need.

Do i need to do that by customizing the shader or is there or more easier way?

PS.i dont know c++, im python only.

Thanx in advance

Naturally you can do this with a shader, that’s exactly what shaders are for. But you’ll have to learn Cg to write something so custom.

I don’t think it’s possible without a shader, though I guess you might be able to achieve something approximating this with a sphere map or cube map trick.