 <p>Turn on the Debug Graphics Device (D3D11_CREATE_DEVICE_DEBUG) and you should see that your constant buffer is not 64 bytes in HLSL as you expect.</p> <pre><code>// cbuffer LightBuffer // { // // float4 lightRange; // Offset: 0 Size: 16 // float3 lightPos; // Offset: 16 Size: 12 // float3 lightColor; // Offset: 32 Size: 12 // float3 lightDirection; // Offset: 48 Size: 12 // float2 spotLightAngles; // Offset: 64 Size: 8 // float padding; // Offset: 72 Size: 4 // // } </code></pre> <p>All told, your constant buffer is 80 bytes in size. Meanwhile your struct on the C++ side is made up of structures of floats which don't adhere to the HLSL packing rules (float4 registers) so your two types don't align.</p>