Блит в URP
Чтобы переключиться с одной текстуры на другую в пользовательском рендеринге в Universal Render Pipeline (URP), используйте следующее:
AddBlitPassAPI в графической системе отображения. Более подробную информацию см. в Blit с помощью графической системы отображения.- Блиттер API из ядра Scriptable Render Pipeline (SRP).
Шейдер, который вы используете с Blitter API должен быть ручным шейдером. Shader Graph шейдеры не совместимы с Blitter API.
Примечание: Не используйте CommandBuffer.Blit или Graphics.Blit APIs, или APIs, которые используют их внутренне, такие как RenderingUtils.Blit. Эти APIs могут нарушить XR рендеринг, и не совместимы с собственными рендеринг проходами.
Например, в функцию Execute в проходе рендеринга добавьте следующее:
{
Blitter.BlitCameraTexture(commandBuffer, sourceTexture, destinationTexture, materialToUse, passNumber);
}
Вы также можете использовать AddBlitPass или AddCopyPass APIs в вашем методе RecordRenderGraph для блита или копирования текстур. Например:
using UnityEngine.Rendering.RenderGraphModule.Util;
...
public override void RecordRenderGraph(RenderGraph renderGraph, ContextContainer frameData) {
// Set up the source texture, destination texture, material, and shader pass number for the blit
RenderGraphUtils.BlitMaterialParameters parameters = new(sourceTexture, destinationTexture, materialToUse, passNumber);
// Add the blit pass
renderGraph.AddBlitPass(parameters, passName: "My Blit Pass");
}
Примеры
Для полных примеров использования Blitter, AddBlitPassи AddCopyPass APIs выполните следующие действия:
- Импорт примеров графа отображения URP. Дополнительные сведения см. в Импорт примера пакета в URP.
- В окне Project перейдите в Образцы > Universal Render Pipeline > 17.3.0 > URP RenderGraph Образцы.
- Откройте Блит, BlitWithFrameDataили BlitWithMaterial.