Vulkan:在后续的RenderPasses中读取附件数据的方式

Vulkan: Ways of reading attachment data in subsequent RenderPasses

给定 2 个渲染通道 A 和 B,以及两者都访问的附件 X,如果 A 在其最后一个子通道上对 X 执行 .storeOp=store,而 B 在其最后一个子通道上对 X 执行 .loadOp=load第一个子通道,B 可以从 X 读取作为输入附件吗?

此外,我可以想到 3 种从以前的 RenderPass 读取附件数据的方法。

还有其他方法吗?

渲染通道实例结束后,所有附件都不再是附件。从那时起,它们只是常规图像。图像的内容由渲染通道的存储操作控制。但是一旦存储操作完成(取决于正确使用依赖项),图像具有存储操作产生的数据。

所以没有“来自以前的 RenderPass”的附件这样的东西。只有图像及其数据。该图像如何获取其数据(同样,取决于正确使用依赖项)与您现在将如何使用它无关。数据就在那里,可以通过访问任何图像的任何方式访问它,仅受您选择施加的限制。

因此,如果图像有一些数据,并且您将其用作附件,并且使用加载操作,则该附件中的数据将具有成为附件之前图像中的图像数据不管 数据是如何到达那里的。这就是加载操作的工作方式。