1
votes

When I share a per-frame constant buffer in both vertex and pixel shader I call:

VSSetConstantBuffers(0,1,&frameBuffer);
PSSetContantBuffers(0,1,%frameBuffer);

And in both HLSL the cbuffer declaration:

cbuffer PerFrame: register(b0)
{
    float1 g_time;
    ...
}

In this particular case I use slot 0 for both shaders. My question is, are this slots independent from the shader stage or they are shared?

In other words, if in the VertexShader I assign cbuffers with slots 0,1,2,3 then in the PixelShader can I use slots 0,1,2,3 for binding different cbuffers or must be the same cbuffers than in VertexShader?

1
I don't know (hence a comment rather than an answer) but I suspect they are common because the slots are described as "...the device's zero-based array...".Roger Rowland

1 Answers

1
votes

They can be different constant buffers, hence the separate VSSetConstantBuffers and PSSetConstantBuffers (etc.) methods.