Per pixel diffuse shading and attenuation should do the job for you.
This means nothing else, but that you have to put the vertices position and normal into texcoord registers:
Out.worldpos = mul(inPos, matWorld);
Out.normal = mul(inNormal, matWorld);
They will automatically be interpolated for each pixel and you can read that interpolated pixel out in the pixel shader.
The shading itself is usually calculated based on
Lambert's cosine law:
In.normal = normalize(In.normal);
float3 lightdir = normalize(In.worldpos.xyz-vecLightPos[0].xyz); //I tend to do this the wrong way around, so you may have to substract the other way around
float3 diffuse = saturate(dot(In.normal, lightdir))*vecLightColor[0].rgb;
For information on the attenuation, check out Hummels post here:
AttenuationThe final formula is color*(ambient+diffuse*attenuation).
I once put some shader base code on my blog. Just take it and insert the formulas from above:
Blog entryThis is actually quite simple, so probably a good possibility for you to get a bit into shaders?
