创建子通道时何时应使用 VK_ATTACHMENT_UNUSED?

Cha*_* Su 2 specifications vulkan

如果我不需要子通道中的附件,我不会包含附件并相应地更新附件计数VkSubpassDescription

我发现这VK_ATTACHMENT_UNUSED是 的一个可能值VkAttachmentReference.attachment。与原来的路线相比,它提供了哪些功能?

(最初,我认为这可能是保留子通道之间附件值的一种方法,但pPreserveAttachments已经这样做了。)

Nic*_*las 6

片段着色器输出绑定到索引Location。这是子通道数组的索引pColorAttachments

如果您的着色器无论出于何种原因写入位置 0 和 2,则意味着pColorAttachments必须有 3 个条目。条目索引 1 是VK_ATTACHMENT_UNUSED

现在,为什么你的着色器要这样做?那么,可以在用于不同子通道的不同管道中使用相同的着色器模块。在一个子通道中,可能有 3 个附件,并且该着色器根本不会写入位置 1(作为管道设置的一部分,它会关闭对该附件的写入)。在另一个子通道中,只有 2 个附件,但您想使用相同的着色器。

是的,理论上你可以使用专业化常量来改变Location索引。我不会说这是一个广泛使用或非常有用的功能。但没有理由不支持。