Получить данные из текущего кадра в URP
Вы можете получить текстуры, которые Universal Render Pipeline (URP) создает для текущего кадра, например, текстуру активного цветового буфера или текстуру G-буфера, и использовать их в своих проходах рендеринга.
Эти текстуры называются кадровыми данными, ресурсными данными или кадровыми ресурсами. В этой документации эти текстуры называются кадровыми данными.
Некоторые текстуры могут не существовать в данных кадра, в зависимости от того, какую точку впрыска вы используете для вставки вашего пользовательского прохода рендеринга в цикл рендеринга кадра URP. Дополнительные сведения о том, какие текстуры существуют, см. в Ссылка на точки впрыска.
Получить данные кадра
Данные кадра находятся в ContextContainer объект, который URP предоставляет, когда вы переопределяете RecordRenderGraph метод.
Чтобы получить ручку текстуры в данных кадра, выполните следующие действия:
-
Получить все данные кадра как объект
UniversalResourceData, используя методGetобъектаContextContainer.Например:
public override void RecordRenderGraph(RenderGraph renderGraph, ContextContainer frameContext) { using (var builder = renderGraph.AddRasterRenderPass<PassData>("Get frame data", out var passData)) { UniversalResourceData frameData = frameContext.Get<UniversalResourceData>(); } } -
Получить адрес текстуры в данных кадра.
Например, следующая команда получает адрес активного цвета текстуры:
TextureHandle activeColorTexture = frameData.activeColorTexture;
Затем вы можете читать текстуру и записывать в нее. См. Использование текстуры в проходе рендеринга.
Ручка текстуры действительна только для текущего графа отображения в текущем кадре.
Вы можете использовать ConfigureInput API, чтобы убедиться, что URP генерирует текстуру, которая вам нужна в данных кадра.
Пример
Полный пример см. в примерах, названных TextureReferenceWithFrameData и BlitWithFrameData в образцах пакета Universal Render Pipeline (URP).