title: C++ Directx 11 Ambient Lighting
body: <p>I'm currently having a problem with lighting in Directx 11, actually its ambient lighting. Here is the code:</p>
  <pre><code> cbuffer ConstantBuffer
  {
      float4x4 final;
      float4x4 rotation;    // the rotation matrix
      float4 lightvec;      // the light's vector
      float4 lightcol;      // the light's color
      float4 ambientcol;    // the ambient light's color
  }
  
  struct VOut
  {
      float4 color : COLOR;
      float4 position : SV_POSITION;
  };
  
  VOut VShader(float4 position : POSITION, float4 normal : NORMAL)
  {
      VOut output;
  
      output.position = mul(final, position);
  
      // set the ambient light
      output.color = ambientcol;
  
      // calculate the diffuse light and add it to the ambient light
      float4 norm = normalize(mul(rotation, normal));
      float diffusebrightness = saturate(dot(norm, lightvec));
      output.color += lightcol * diffusebrightness;
  
      return output;
  }
  
  float4 PShader(float4 color : COLOR) : SV_TARGET
  {
      return color;
  }
  </code></pre>
  <p>Then i send the values to the shader:</p>
  <pre><code>ambLight.LightVector = D3DXVECTOR4(1.0f, 1.0f, 1.0f, 0.0f);
  ambLight.LightColor = D3DXCOLOR(0.5f, 0.5f, 0.5f, 1.0f);
  ambLight.AmbientColor = D3DXCOLOR(0.2f, 0.2f, 0.2f, 1.0f);
  
  ShaderManager.UpdateSubresourceDiffuseShader(devcon);
  </code></pre>
  <p>And then i get the following:
  <a href="https://i.stack.imgur.com/A2QsE.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/A2QsE.png" alt="a busy cat" /></a></p>
  
  <p>Why?</p>