//-----------------------------------------------------------------------
// Pixel shader function (DIRECTIONAL LIGHT)
//-----------------------------------------------------------------------
float4 PS( VS_OUTPUT IN ) : COLOR
{
float3 viewDir = cameraPos - IN.worldPos;
float3 lightDir = -lightDirection;
float3 halfVector = normalize(normalize(lightDir) + normalize(viewDir));
float3 n = normalize(IN.Normal);
float3 h = normalize(halfVector);
float3 l = normalize(lightDir);
float nDotL = saturate(dot(n, l));
float nDotH = saturate(dot(n, h));
float power = (nDotL == 0.0f) ? 0.0f : pow(nDotH, materialPower);
float4 FinalDiffuse = materialDiffuse * lightDiffuse;
float4 FinalSpecular = materialSpecular * lightSpecular;
float4 color = (materialAmbient + globalAmbient) +
(FinalDiffuse * nDotL) + (FinalSpecular * power);
return color * tex2D(colorMap, IN.UV);
}