我正在尝试为我的延迟渲染器使用轻量级。但我遇到了模板操作的问题。
现在我正在使用格式为VK_FORMAT_D32_SFLOAT_S8_UINT
的深度/模板附件。在照明子通道中,我需要读取深度以重建位置,并读取和写入模板以掩盖光量。
对于照明子通道,我想将深度/模板添加为输入附件,并作为深度附件,但这些需要不同的布局,这显然是不可能同时进行的。
现在,我指的是同一个附件,作为同一子通道中的输入附件和深度附件。
作为输入附件,布局为VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
,作为深度附件,布局为VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL
(不提供验证错误?),并且我的模板操作不会执行。
现在我可以为深度和模板创建两个不同的附件,但这可能会使用更多的内存,这也不是很好。所以我的问题是,你如何设置一个子通道,你可以读取和写入相同的深度/模板附件? (也在一个管道内)
答案 0 :(得分:1)
但这些需要不同的布局
无意义;这就是GENERAL
布局的用途。该规范甚至明确地提出了这一点:
用作输入附件和深度/模板附件的附件必须位于VK_IMAGE_LAYOUT_GENERAL或VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL布局中
显然后者对你没有帮助;)