Vulkan: способы чтения данных вложения в последующих проходах визуализации

#vulkan

#vulkan

Вопрос:

Учитывая 2 прохода рендеринга, A и B, и вложение X, к которому обращаются оба, если A выполняет a .storeOp=store на X на своем последнем подпассе, а B выполняет a .loadOp=load на X на своем первом подпассе, может ли B считывать из X в качестве входного вложения?

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

  • Использование сэмплера.
  • (Потенциально) в качестве входного вложения.
  • В качестве образа хранилища.

Есть ли другие способы?

Ответ №1:

Как только экземпляр прохода рендеринга завершен, все вложения перестают быть вложениями. С этого момента это просто обычные изображения. Содержимое изображения определяется операцией хранения на проходе рендеринга. Но как только операция хранения выполнена (при условии правильного использования зависимостей), изображение содержит данные, полученные в результате операции хранения.

Таким образом, не существует такого понятия, как вложение «из предыдущего прохода рендеринга». Есть только изображение и его данные. То, как это изображение получило свои данные (опять же, при условии правильного использования зависимостей), не имеет отношения к тому, как вы собираетесь его использовать сейчас. Данные есть, и к ним можно получить доступ любым способом, доступным для любого изображения, при условии соблюдения только тех ограничений, которые вы решите наложить.

Итак, если изображение содержит некоторые данные, и вы используете его как вложение, и вы используете операцию загрузки load , данные в этом вложении будут содержать данные изображения из изображения, прежде чем стать вложением, независимо от того, как данные попали туда. Вот как работают операции загрузки.