0
\$\begingroup\$

I have a procedural 3D texture that is generated in a compute shader. I want to update a small, specific portion of the texture only (eg: bottom right corner). It seems wasteful to dispatch all thread groups when only a small group of texels needs to be recomputed. Is there a way for me to dispatch only a small range with an offset?

D3D12 only seems to support:

void Dispatch(
    UINT ThreadGroupCountX,
    UINT ThreadGroupCountY,
    UINT ThreadGroupCountZ
);

Where as I want to do:

void Dispatch(
    UINT ThreadGroupStartIndexX,
    UINT ThreadGroupCountX,
    UINT ThreadGroupStartIndexY,
    UINT ThreadGroupCountY,
    UINT ThreadGroupStartIndexZ,
    UINT ThreadGroupCountZ
);

Is this possible?

Edit: I realise that I can pass an offset to the shader and compute with the offset in there. However, I'm curious if there is native support to do this directly from the API

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.