在子通道中读取和写入相同(深度)附件

时间:2016-08-04 15:39:31

标签: vulkan

我正在尝试为我的延迟渲染器使用轻量级。但我遇到了模板操作的问题。 现在我正在使用格式为VK_FORMAT_D32_SFLOAT_S8_UINT的深度/模板附件。在照明子通道中,我需要读取深度以重建位置,并读取和写入模板以掩盖光量。 对于照明子通道,我想将深度/模板添加为输入附件,并作为深度附件,但这些需要不同的布局,这显然是不可能同时进行的。

现在,我指的是同一个附件,作为同一子通道中的输入附件和深度附件。 作为输入附件,布局为VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL,作为深度附件,布局为VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL(不提供验证错误?),并且我的模板操作不会执行。

现在我可以为深度和模板创建两个不同的附件,但这可能会使用更多的内存,这也不是很好。所以我的问题是,你如何设置一个子通道,你可以读取和写入相同的深度/模板附件? (也在一个管道内)

1 个答案:

答案 0 :(得分:1)

  

但这些需要不同的布局

无意义;这就是GENERAL布局的用途。该规范甚至明确地提出了这一点:

  

用作输入附件和深度/模板附件的附件必须位于VK_IMAGE_LAYOUT_GENERAL或VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL布局中

显然后者对你没有帮助;)