hlsl - 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 的配置都是有上限的。
任何关于为什么会这样的见解将不胜感激。
解决方案
错误的来源来自于实例化 ComputeBuffer。我的步幅参数设置不正确。
推荐阅读
- ios - 在 Realm Swift 对象模型上更改主键属性名称
- javascript - 如何将 AddEventListener 应用于创建的元素?
- c++ - 为什么在使用 boost rtree 最近查询时会出现编译错误?
- javascript - 此 Firebase onAuthStateChanged 如何在此代码中工作
- java - 如何在 AnyLogic 中选择通过网络中另一个代理连接的最近代理?
- javascript - 在 javascript 中从数据库中操作 CQL 参数
- inheritance - Odoo - 视图中的多级继承
- c++ - 下载的 libpqxx 源中的内联函数错误
- html - 背景图片在手机上没有响应
- r - 无法在 R 中的函数内操作全局/局部变量