In D3D12 you can set a root parameter in a root signature to be a descriptor table, which is just a collection of descriptor ranges.
A descriptor range is just a typed list of descriptors. You set which shader register the descriptor range sits in with D3D12_DESCRIPTOR_RANGE::BaseShaderRegister, however I am wondering what happens to all the other descriptors in the range? What register are they put into? Just the BaseShaderRegister + the current descriptor in the range?
So say I have a descriptor range like this:
D3D12_DESCRIPTOR_RANGE range;
range.RangeType = D3D12_DESCRIPTOR_RANGE_TYPE_SRV;
range.NumDescriptors = 7;
range.BaseShaderRegister = 2;
range.RegisterSpace = 0;
range.OffsetInDescriptorsFromTableStart = 0;
Can I then assume that the descriptors will be placed in registers 2 to 8?
So I would be able to access them like this in HLSL?
Texture2D texture01 : register(t2);
Texture2D texture02 : register(t3);
Texture2D texture03 : register(t4);
Texture2D texture04 : register(t5);
Texture2D texture05 : register(t6);
Texture2D texture06 : register(t7);
Texture2D texture07 : register(t8);
Are my assumptions correct?