Files
PrinceOfGlory/Packages/Custom/com.unity.render-pipelines.universal@14.0.9/Runtime/2D/Passes/UpscalePass.cs
kridoo 6e91a0c7f0 111
2025-09-15 17:32:08 +08:00

51 lines
1.8 KiB
C#

using UnityEngine.Experimental.Rendering.Universal;
namespace UnityEngine.Rendering.Universal
{
internal class UpscalePass : ScriptableRenderPass
{
private static readonly ProfilingSampler m_ProfilingScope = new ProfilingSampler("Upscale Pass");
RTHandle m_Source;
RTHandle m_UpscaleHandle;
static Material m_BlitMaterial;
public UpscalePass(RenderPassEvent evt, Material blitMaterial)
{
renderPassEvent = evt;
m_BlitMaterial = blitMaterial;
}
public void Setup(RTHandle colorTargetHandle, int width, int height, FilterMode mode, ref RenderingData renderingData, out RTHandle upscaleHandle)
{
m_Source = colorTargetHandle;
ref CameraData cameraData = ref renderingData.cameraData;
RenderTextureDescriptor desc = cameraData.cameraTargetDescriptor;
desc.width = width;
desc.height = height;
desc.depthBufferBits = 0;
RenderingUtils.ReAllocateIfNeeded(ref m_UpscaleHandle, desc, mode, TextureWrapMode.Clamp, name: "_UpscaleTexture");
upscaleHandle = m_UpscaleHandle;
}
public void Dispose()
{
m_UpscaleHandle?.Release();
}
public override void Execute(ScriptableRenderContext context, ref RenderingData renderingData)
{
var cmd = renderingData.commandBuffer;
using (new ProfilingScope(cmd, m_ProfilingScope))
{
CoreUtils.SetRenderTarget(cmd, m_UpscaleHandle,
RenderBufferLoadAction.DontCare, RenderBufferStoreAction.Store,
ClearFlag.None, Color.clear);
Blit(cmd, m_Source, m_UpscaleHandle, m_BlitMaterial);
}
}
}
}