В Вулкане у вас может быть буфер глубины для каждого цветового вложения?

#vulkan

Вопрос:

В Vulkan, если вы хотите записать в буфер цвета с буфером глубины, вы создаете вложение буфера кадров для цвета и одно вложение для буфера глубины. Затем, когда вы создаете описание подпространства, вы указываете указатель глубины и вложения трафарета на буфер глубины, но, похоже, есть только один указатель:

 VkSubpassDescription subpass_description = {}; subpass_description.pipelineBindPoint = VK_PIPELINE_BIND_POINT_GRAPHICS; subpass_description.colorAttachmentCount = vk_attachment_descriptions.size(); subpass_description.pColorAttachments = vk_attachment_references.data(); subpass_description.pDepthStencilAttachment;  

Хотя подпространство принимает несколько цветовых вложений, кажется, что существует только один указатель pDepthStencilAttachment. Позволяет ли Vulkan использовать только один буфер глубины и трафарета при записи в несколько цветовых вложений?

Комментарии:

1. Существуют вещи, называемые «ранним уничтожением z» и «иерархическим буфером z», которые позволяют аппаратному обеспечению уничтожать фрагменты до того, как их шейдеры получат шанс на существование, экономя производительность. С учетом этого, как вы представляете, как это работает для разных цветовых вложений? К сожалению, вы тоже не можете просто не написать в какое-то вложение. Но вы могли бы использовать хак смешивания, чтобы сохранить ценность или нет, записав 1/0 в альфа.

Ответ №1:

Позволяет ли Vulkan использовать только один буфер глубины и трафарета при записи в несколько цветовых вложений?

ДА.