#vulkan
#vulkan
Вопрос:
Учитывая 2 прохода рендеринга, A и B, и вложение X, к которому обращаются оба, если A выполняет a .storeOp=store
на X на своем последнем подпассе, а B выполняет a .loadOp=load
на X на своем первом подпассе, может ли B считывать из X в качестве входного вложения?
Кроме того, я могу придумать 3 способа чтения данных вложений из предыдущего прохода рендеринга.
- Использование сэмплера.
- (Потенциально) в качестве входного вложения.
- В качестве образа хранилища.
Есть ли другие способы?
Ответ №1:
Как только экземпляр прохода рендеринга завершен, все вложения перестают быть вложениями. С этого момента это просто обычные изображения. Содержимое изображения определяется операцией хранения на проходе рендеринга. Но как только операция хранения выполнена (при условии правильного использования зависимостей), изображение содержит данные, полученные в результате операции хранения.
Таким образом, не существует такого понятия, как вложение «из предыдущего прохода рендеринга». Есть только изображение и его данные. То, как это изображение получило свои данные (опять же, при условии правильного использования зависимостей), не имеет отношения к тому, как вы собираетесь его использовать сейчас. Данные есть, и к ним можно получить доступ любым способом, доступным для любого изображения, при условии соблюдения только тех ограничений, которые вы решите наложить.
Итак, если изображение содержит некоторые данные, и вы используете его как вложение, и вы используете операцию загрузки load , данные в этом вложении будут содержать данные изображения из изображения, прежде чем стать вложением, независимо от того, как данные попали туда. Вот как работают операции загрузки.