Shade-C uses deferred rendering so all the lighting is done by post-processing shaders which means that you don't have to do any of this in the object shader.
It also uses a default material which allows you to create a shader by just commenting / uncommenting #defines and it supports custom pixel- and vertexshader
which can be used for example to enable vertex displacement - like for vegetation shaders
Well, this probably sounds a bit complicated now, but it really isn't
you set some material settings like this:
//assign skins
#define SKIN_ALBEDO (skin1.xyz) //diffusemap
#define SKIN_NORMAL (skin2.xyz) //normalmap
#define SKIN_GLOSS (skin2.w) //glossmap
//...
#define NORMALMAPPING //do normalmapping?
#define GLOSSMAP //entity has glossmap?
#define GLOSSSTRENGTH 0 //glossmap channel will be set to this value if GLOSSMAP is not defined
and create a custom vertex shader for the animation:
#define CUSTOM_VS_POSITION
float4 Custom_VS_Position(vsIn In)
{
float3 P = mul(In.Pos, matWorld);
float force_x = vecSkill1.x;
float force_y = vecSkill1.y;
float speed = sin(vecTime.w * vecSkill1.z);
In.Pos.z += speed * force_x;
return mul(In.Pos,matWorldViewProj);
}
You don't have to worry about the lighting, normalmapping, shadowmapping, etc.
that's all done by the default material and the deferred rendering