   Blinn-Phong shader not shading correctly?
  So I was just playing around with XNA and the D3DBook and decided to implement a Blinn-Phong shader for fun.  However i'm not getting the correct image for some reason. Shader float4x4 xWorldViewProjection;float4x4 InverseTransposeWorld;float4 DiffuseLightColor;float4 SpecularLightColor;float3 LightPosition;float3 CameraPosition;float SpecularExponent;struct VertexShaderInput{    float4 Position : POSITION0;    float4 Normal : NORMAL0;};struct VertexShaderOutput{    float4 Position: POSITION0;    float3 WorldNormal: TEXCOORD1;};VertexShaderOutput VertexShaderFunction(VertexShaderInput input){    VertexShaderOutput output;    output.Position = mul(input.Position, xWorldViewProjection);    float3 vNorm = normalize(mul(input.Normal, InverseTransposeWorld));    output.WorldNormal = vNorm;    return output;}float4 PixelShaderFunction(VertexShaderOutput input) : COLOR0{    //float NdotL = max(0.0f, dot(input.WorldNormal, -LightDirection));    //float4 c = NdotL * LightColor;   // Blinn-Phong    float3 half_vector = normalize( CameraPosition + LightPosition);    float HdotN = max(0.0f, dot(half_vector, input.WorldNormal));    float3 specular = SpecularLightColor * pow(HdotN, SpecularExponent);    float3 diffuse = DiffuseLightColor * max(0.0f, dot(input.WorldNormal, LightPosition));    return float4(diffuse + specular, 1.0f);}technique Technique1{    pass Pass1    {   // TODO: set renderstates here.   VertexShader = compile vs_3_0 VertexShaderFunction();   PixelShader = compile ps_3_0 PixelShaderFunction();    }}Drawing function  Matrix[] x = new Matrix[model.Bones.Count];  model.CopyAbsoluteBoneTransformsTo(x);  foreach (ModelMesh mesh in model.Meshes)  { foreach (Effect e in mesh.Effects) {xWorldViewPosition.SetValue(Matrix.Identity * x[mesh.ParentBone.Index] * camera.view * camera.projection);InverseTransposeWorld.SetValue(Matrix.Invert(Matrix.Transpose(Matrix.Identity * x[mesh.ParentBone.Index])));CameraPosition.SetValue(camera.cameraPosition); } mesh.Draw();  }Some Addition ValuesDiffuseLightColor.SetValue(Color.Yellow.ToVector4());SpecularLightColor.SetValue(Color.White.ToVector4());LightPosition.SetValue(new Vector3(30f, 30f, 30f));SpecularExponent.SetValue(fSpecExp);Output: