【发布时间】:2018-01-03 14:14:52
【问题描述】:
我正在尝试在 vulkan 中创建一个延迟渲染器,其中包含一个渲染通道和两个子通道。第一个应该是填充 G-Buffer 的几何通道,第二个应该是应用照明的着色通道。现在的问题是我不知道应该如何描述VkRenderPassCreateInfo 中子通道之间的依赖关系。
VkRenderPassCreateInfo 有一个字段:
pAttachments 指向一组attachmentCount 描述附件属性的VkAttachmentDescription 结构的数组,如果attachmentCount 为零,则指向NULL。
但是VkSubpassDescription 有一个字段:
pColorAttachments 是 colorAttachmentCount VkAttachmentReference 结构的数组,其中列出了渲染通道的哪些附件将用作子通道中的颜色附件,以及每个附件在子通道中的布局。数组的每个元素对应一个片段着色器输出位置,即如果着色器声明了一个输出变量layout(location=X),那么它使用pColorAttachments[X]中提供的附件
所以据我了解,VkSubpassDescription 的pColorAttachments 声明了每个通道的输出布局。所以在我的示例中,第一个子通道将有 4 个输出:1 个位置、1 个法线、1 个镜面反射和 1 个深度附件。第二个子通道将有 1 个输出:屏幕上显示的颜色。如果是这样,VkRenderPassCreateInfo 中的pAttachments 字段的用途是什么?
【问题讨论】:
标签: c++ render renderer vulkan