Hi,
Happy as I was in getting my first VS/PS working with ambient and diffuse lighting, I'm now trying to add the ambient and diffuse material into the calculation. Been trying a lot of variants but now yet with succes.
Here's the calculation I'm doing:
float4 MatAmb : MATERIALAMBIENT;
float4 MatDiff: MATERIALDIFFUSE;
float3 DiffLightDir < string UIDirectional = "Light Direction"; > = {1.0, 0.0, 0.0};
float4 DiffLightColor = { 1.0f, 1.0f, 1.0f, 1.0f };
float DiffLightIntensity = 0.0f;
float4 AmbientColor;
float AmbientIntensity;
VS_OUTPUT VS_function(VS_INPUT input)
{
VS_OUTPUT Out = (VS_OUTPUT)0;
float4 worldPosition = mul(input.Pos, World);
Out.Pos = mul(worldPosition, ViewProj);
float4 normal = mul(input.Normal, WorldInvTransp);
float lightIntensity = dot(normal, DiffLightDir);
Out.Color = saturate(DiffLightColor * DiffLightIntensity * lightIntensity * MatDiff);
Out.Normal = normal;
Out.TexCoord = input.TexCoord;
return Out;
}
/****************************************************/
/** THE PIXELSHADER PROGRAM **/
/****************************************************/
float4 PS_function(VS_OUTPUT input): COLOR0
{
float4 textureColor = tex2D(textureSampler, input.TexCoord);
textureColor.a = 1;
return saturate((input.Color + AmbientColor * AmbientIntensity) * textureColor);
}
What I thought was the solution for ambient, was:
return saturate((input.Color + AmbientColor * AmbientIntensity) * textureColor * MatAmb);
But the endresult is for each material 'black'/ dark, I'm 100% sure all vars are filled with valid values.
Can you give me some pointers or help me out?






