Skip to content

Commit 2a2410b

Browse files
CalChiuEvergreen
authored andcommitted
[UUM-109492] Fixed UberPostProcess pass viewport scaling not accounting for subsequent custom pass presence
1 parent 74b43d8 commit 2a2410b

2 files changed

Lines changed: 11 additions & 11 deletions

File tree

Packages/com.unity.render-pipelines.universal/Runtime/Passes/PostProcess/UberPostProcessPass.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ private class UberPostPassData
8787
internal FilmGrainParams filmGrain;
8888
internal DitheringParams dither;
8989

90-
internal bool isFinalPass;
90+
internal bool isActiveTargetBackBuffer;
9191
internal bool useFastSRGBLinearConversion;
9292
internal bool requireSRGBConversionBlit;
9393
}
@@ -194,7 +194,7 @@ public override void RecordRenderGraph(RenderGraph renderGraph, ContextContainer
194194
passData.filmGrain.Setup(filmGrain, m_FilmGrainTextures, cameraData.pixelWidth, cameraData.pixelHeight);
195195
passData.dither.Setup(m_DitherTexture, cameraData.pixelWidth, cameraData.pixelHeight);
196196
}
197-
passData.isFinalPass = m_IsFinalPass;
197+
passData.isActiveTargetBackBuffer = resourceData.isActiveTargetBackBuffer;
198198

199199
builder.SetRenderFunc(static (UberPostPassData data, RasterGraphContext context) =>
200200
{
@@ -260,7 +260,7 @@ public override void RecordRenderGraph(RenderGraph renderGraph, ContextContainer
260260
if(PostProcessUtils.RequireHDROutput(cameraData))
261261
{
262262
PostProcessUtils.SetupHDROutput(material, cameraData.hdrDisplayInformation, cameraData.hdrDisplayColorGamut, data.tonemapping, data.hdrOperations, cameraData.rendersOverlayUI);
263-
RenderingUtils.SetupOffscreenUIViewportParams(material, ref cameraData.pixelRect, data.isFinalPass && cameraData.resolveFinalTarget);
263+
RenderingUtils.SetupOffscreenUIViewportParams(material, ref cameraData.pixelRect, data.isActiveTargetBackBuffer);
264264
}
265265

266266
#if ENABLE_VR && ENABLE_XR_MODULE
@@ -272,10 +272,10 @@ public override void RecordRenderGraph(RenderGraph renderGraph, ContextContainer
272272

273273
// Done with Uber, blit it
274274
if (cameraData.xr.enabled && cameraData.xr.hasValidVisibleMesh)
275-
PostProcessUtils.ScaleViewportAndDrawVisibilityMesh(context, data.sourceTexture, data.destinationTexture, data.cameraData, material, data.isFinalPass);
275+
PostProcessUtils.ScaleViewportAndDrawVisibilityMesh(context, data.sourceTexture, data.destinationTexture, data.cameraData, material, data.isActiveTargetBackBuffer);
276276
else
277277
#endif
278-
PostProcessUtils.ScaleViewportAndBlit(context, data.sourceTexture, data.destinationTexture, data.cameraData, material, data.isFinalPass);
278+
PostProcessUtils.ScaleViewportAndBlit(context, data.sourceTexture, data.destinationTexture, data.cameraData, material, data.isActiveTargetBackBuffer);
279279
});
280280
}
281281

Packages/com.unity.render-pipelines.universal/Runtime/PostProcessUtils.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -350,7 +350,7 @@ internal static void SetGlobalShaderSourceSize(CommandBuffer cmd, RTHandle sourc
350350
SetGlobalShaderSourceSize(CommandBufferHelpers.GetRasterCommandBuffer(cmd), source);
351351
}
352352

353-
internal static void ScaleViewport(RasterCommandBuffer cmd, RTHandle dest, UniversalCameraData cameraData, bool isFinalPass)
353+
internal static void ScaleViewport(RasterCommandBuffer cmd, RTHandle dest, UniversalCameraData cameraData, bool isActiveTargetBackBuffer)
354354
{
355355
RenderTargetIdentifier cameraTarget = BuiltinRenderTextureType.CameraTarget;
356356
#if ENABLE_VR && ENABLE_XR_MODULE
@@ -359,7 +359,7 @@ internal static void ScaleViewport(RasterCommandBuffer cmd, RTHandle dest, Unive
359359
#endif
360360
if (dest.nameID == cameraTarget || cameraData.targetTexture != null)
361361
{
362-
if (!isFinalPass || !cameraData.resolveFinalTarget)
362+
if (!isActiveTargetBackBuffer)
363363
{
364364
// Inside the camera stack the target is the shared intermediate target, which can be scaled with render scale.
365365
// camera.pixelRect is the viewport of the final target in pixels, so it cannot be used for the intermediate target.
@@ -383,19 +383,19 @@ internal static void ScaleViewport(RasterCommandBuffer cmd, RTHandle dest, Unive
383383
}
384384
}
385385

386-
internal static void ScaleViewportAndBlit(RasterGraphContext context, in TextureHandle sourceTexture, in TextureHandle destTexture, UniversalCameraData cameraData, Material material, bool isFinalPass)
386+
internal static void ScaleViewportAndBlit(RasterGraphContext context, in TextureHandle sourceTexture, in TextureHandle destTexture, UniversalCameraData cameraData, Material material, bool isActiveTargetBackBuffer)
387387
{
388388
Vector4 scaleBias = RenderingUtils.GetFinalBlitScaleBias(context, sourceTexture, destTexture);
389-
ScaleViewport(context.cmd, destTexture, cameraData, isFinalPass);
389+
ScaleViewport(context.cmd, destTexture, cameraData, isActiveTargetBackBuffer);
390390

391391
Blitter.BlitTexture(context.cmd, sourceTexture, scaleBias, material, 0);
392392
}
393393

394-
internal static void ScaleViewportAndDrawVisibilityMesh(RasterGraphContext context, in TextureHandle sourceTexture, in TextureHandle destTexture, UniversalCameraData cameraData, Material material, bool isFinalPass)
394+
internal static void ScaleViewportAndDrawVisibilityMesh(RasterGraphContext context, in TextureHandle sourceTexture, in TextureHandle destTexture, UniversalCameraData cameraData, Material material, bool isActiveTargetBackBuffer)
395395
{
396396
#if ENABLE_VR && ENABLE_XR_MODULE
397397
Vector4 scaleBias = RenderingUtils.GetFinalBlitScaleBias(context, sourceTexture, destTexture);
398-
ScaleViewport(context.cmd, destTexture, cameraData, isFinalPass);
398+
ScaleViewport(context.cmd, destTexture, cameraData, isActiveTargetBackBuffer);
399399

400400
// Set property block for blit shader
401401
MaterialPropertyBlock xrPropertyBlock = XRSystemUniversal.GetMaterialPropertyBlock();

0 commit comments

Comments
 (0)