首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >计算着色器和workGroup

计算着色器和workGroup
EN

Stack Overflow用户
提问于 2019-02-18 23:00:24
回答 1查看 1.2K关注 0票数 2

我想了解如何使用计算着色器。我在网上找不到任何细节。什么是workingGroup?

代码语言:javascript
复制
layout (local_size_x = 1, local_size_y = 1, local_size_z = 1) in;

这是什么意思?

代码语言:javascript
复制
vkCmdDispatch(cmdBuffer, 1, 1, 1);

着色器中的值和函数中的值是否应该相同?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-18 23:47:39

为了理解计算着色器的这些基本概念,OpenCL、OpenGL、金属、D3D和CUDA计算的材质也是相关的:它们都使用类似的层次栅格细分工作。

在Vulkan术语中,从最细到最粗的层次结构是:调用(又称线程)>子组>本地工作组>全局工作组(又称分派)。子组是一个更高级的主题;您可以暂时忽略它们,因为它们大多是隐含的。为了混淆,当人们指的是“本地工作组”时,他们通常只说“工作组”。

着色器中的layout(local_size)声明根据各个调用定义本地工作组的尺寸。vkCmdDispatch的参数以本地工作组的形式给出了全局工作组的维度。

因此,如果调用vkCmdDispatch(cmdbuf, M, N, P)和当前管道中声明为layout (local_size_x=X, local_size_y=Y, local_size_z=Z)的计算着色器,则Vulkan将运行MxNxP本地工作组,其中每个工作组都由着色器的XxYxZ调用组成。

在每个调用中,您可以使用GLSL built-in input variables gl_NumWorkGroupsgl_WorkGroupIDgl_LocalInvocationIDgl_GlobalInvocationIDgl_LocalInvocationIndex找出它在本地和全局网格中的位置。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54750009

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档