是否在GLSL中使用多个描述符集而没有显式的“集”存储?

时间:2019-08-15 11:16:21

标签: vulkan

我是Vulkan的新手,我尝试了解描述符集功能。

对于给定的着色器,我想在渲染过程中的不同步骤分别绑定我的制服:

  • 每个子通道绑定(例如:相机东西)

  • 每个材质绑定(例如:纹理材质)

  • 每个对象绑定(例如:游戏实例实例)

但是我想通过'set'对制服进行自动分组(我不希望用户被迫知道哪个变量应该放在哪个set中)。

是否可以创建多个描述符集而无需使用“ set = X”显式标记GLSL着色器中的制服?我们可以使用Vulkan API手动进行“分组”吗?

1 个答案:

答案 0 :(得分:3)

  

是否可以创建多个描述符集而无需使用“ set = X”显式标记GLSL着色器中的制服?

除非您在将着色器代码本身提供给Vulkan之前对其进行了破解,否则不会。作为一个显式API,Vulkan希望其数据的所有贡献者都知道发生了什么。因此,如果您不希望用户知道发生了什么,那么需要先修改其着色器,然后再将其发送到Vulkan。

您还可以让用户使用专门的索引指定set,该常量使用特定的索引,您的Vulkan代码可以使用值对它进行专门化。