yeah your 2nd idea is what i wanna do, i was try to do but withou succes

here u can see how i was try to do

Code:
float redskill = vecSkill1.x;
float greenskill = vecSkill1.y;
float blueskill = vecSkill1.z;
float alphaskill = vecSkill1.w;

float4 dynlight = {redskill, greenskill, blueskill, alphaskill};
float4 Diffuse = DiffuseIntensity * saturate(dot(-dynlight, InNormal)); 
// Fetch the pixel color from the color map: 
float4 Color = tex2D(ColorMapSampler, InTex); 
// Calculate the reflection vector: 
float3 R = normalize(2 * dot(InNormal, -dynlight) * InNormal + dynlight);



but the result is not very nice