首页 > 解决方案 > ComputeShader 中 SV_DispatchThreadID 的限制范围

问题描述

情况如下:

我有一个内核:

#pragma kernel diffga
#pragma[numthreads(16, 8, 1)]
void diffga(uint3 id : SV_DispatchThreadID) {
    /* code here */
}

我使用以下内容发送此内核:

_shader.Dispatch(kidiffga, 8, 16, 1)

如果我捕获 id.x 和 id.y 的值,则 id.y 的范围为 0:31 作为 expexted。但是 id.x 的范围仅为 0:7。如果我更改 numthreads 并调度以使预期范围小于 8,那么它可以正常工作。但是,任何要求范围大于 8 的 numthreads 和 dispatch 的配置都是有上限的。

任何关于为什么会这样的见解将不胜感激。

标签: hlsl

解决方案


错误的来源来自于实例化 ComputeBuffer。我的步幅参数设置不正确。


推荐阅读