dx12) Shader Constants goes wrong
As per the packing rules for arrays in constant buffers :
cbuffer ShadowCB : register(b5)
{
float gZSplits[3] : packoffset(c0);
}
Is not 3 floats (size 12 bytes), so the representation is not
cbuffer ShadowCB : register(b5)
{
float gZSplits0;
float gZSplits1;
float gZSplits2;
};
It is actually expanded to:
cbuffer ShadowCB : register(b5)
{
float gZSplits0;
float3 pad0;
float gZSplits1;
float3 pad0;
float gZSplits2;
};
So you need to make sure that your cpu side buffer is actually matching that layout.
You can double check that ShadowCB size is indeed 36 bytes by checking disassembly.