我是Vulkan的新手,我尝试了解描述符集功能。
对于给定的着色器,我想在渲染过程中的不同步骤分别绑定我的制服:
每个子通道绑定(例如:相机东西)
每个材质绑定(例如:纹理材质)
每个对象绑定(例如:游戏实例实例)
但是我想通过'set'对制服进行自动分组(我不希望用户被迫知道哪个变量应该放在哪个set中)。
是否可以创建多个描述符集而无需使用“ set = X”显式标记GLSL着色器中的制服?我们可以使用Vulkan API手动进行“分组”吗?
答案 0 :(得分:3)
是否可以创建多个描述符集而无需使用“ set = X”显式标记GLSL着色器中的制服?
除非您在将着色器代码本身提供给Vulkan之前对其进行了破解,否则不会。作为一个显式API,Vulkan希望其数据的所有贡献者都知道发生了什么。因此,如果您不希望用户知道发生了什么,那么您需要先修改其着色器,然后再将其发送到Vulkan。
您还可以让用户使用专门的索引指定set
,该常量使用特定的索引,您的Vulkan代码可以使用值对它进行专门化。