Когда я должен использовать VK_ATTACHMENT_UNUSED при создании подпроходов? - PullRequest
2 голосов
/ 30 мая 2019

Если мне не нужны вложения в подпроцессе, я бы не включил вложение и соответственно обновил число вложений в VkSubpassDescription.

Я вижу, что VK_ATTACHMENT_UNUSEDвозможное значение для VkAttachmentReference.attachment.Какие функции он предоставляет по исходному маршруту?

(Изначально я думал, что это может быть способ сохранить значения вложений между подпроходами, но pPreserveAttachments уже делает это.)

1 Ответ

4 голосов
/ 30 мая 2019

Выходные данные шейдера фрагмента привязаны к индексу Location. Это индекс в массиве pColorAttachments подпроцесса.

Если у вас есть шейдер, который по какой-либо причине записывает в местоположения 0 и 2, это означает, что pColorAttachments должен иметь 3 записи. Индекс входа 1: VK_ATTACHMENT_UNUSED.

Теперь, почему ваш шейдер это сделал? Что ж, можно использовать один и тот же шейдерный модуль в разных конвейерах, предназначенных для разных подпроходов. В одном подпроцессе может быть 3 вложения, и этот шейдер просто не записывает в местоположение 1 (он отключает запись в это вложение как часть настройки конвейера). В другом подпункте есть только 2 вложения, но вы хотите использовать тот же шейдер.

Да, теоретически вы можете использовать константы специализации для изменения индекса Location. Я бы не сказал, что это широко используемая или очень полезная функция. Но нет причин не поддерживать это.

...