Использовать текстуру глубины в вычислительном шейдере - PullRequest
1 голос
/ 11 февраля 2020

Я пытаюсь использовать текстуру глубины в вычислительном шейдере.

Текстура глубины создается в формате VK_FORMAT_D32_SFLOAT и с использованием VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT | VK_IMAGE_USAGE_STORAGE_BIT.

Проблема в том, что кажется, что эта комбинация параметров не поддерживается, у меня есть это предупреждение: vkCreateImageView(): pCreateInfo->format VK_FORMAT_D32_SFLOAT with tiling VK_IMAGE_TILING_OPTIMAL does not support usage that includes VK_IMAGE_USAGE_STORAGE_BIT.

Кроме этого сообщения, программа работает хорошо, и вычислительный шейдер успешно считывает текстуру глубины.

Возможно ли прочитать текстуру глубины в вычислительном шейдере?

1 Ответ

2 голосов
/ 11 февраля 2020

Да, в вычислительном шейдере можно прочитать 32-битное изображение с нормализованной глубиной. Только не в вашей реализации .

Vulkan позволяет реализации отклонять определенные комбинации форматов изображений и их использования. Они могут полностью отказаться от некоторых форматов, ограничивая другие форматы только указанием c использования. Таким образом, если только комбинация формат + использование, которую вы намереваетесь использовать, не включена в список требуемых функций спецификации Vulkan, вы должны запросить ее поддержку.

Vulkan не требует, чтобы реализации позволяли Вы должны использовать D32 изображений в качестве хранилища изображений. Следовательно, вы должны проверить, обеспечивает ли конкретная реализация эту функциональность.

...