From ada63089b5d5f00f8ccbec22e34c4a1a2b5b2d5f Mon Sep 17 00:00:00 2001 From: Doug McDiarmid Date: Sat, 19 Jun 2021 01:30:36 -0700 Subject: [PATCH] Changed FullScreenTrianglePass::FrameBegin to use FramePrepareParams viewport and scissor states if they are set. Changed ReflectionScreenSpaceBlurChildPass to set the viewport and scissor states. --- .../ReflectionScreenSpaceBlurChildPass.cpp | 3 +++ .../RPI.Public/Pass/FullscreenTrianglePass.cpp | 16 +++++++++++++--- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/Gems/Atom/Feature/Common/Code/Source/ReflectionScreenSpace/ReflectionScreenSpaceBlurChildPass.cpp b/Gems/Atom/Feature/Common/Code/Source/ReflectionScreenSpace/ReflectionScreenSpaceBlurChildPass.cpp index cb57d2519d..2d4b6ee85f 100644 --- a/Gems/Atom/Feature/Common/Code/Source/ReflectionScreenSpace/ReflectionScreenSpaceBlurChildPass.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/ReflectionScreenSpace/ReflectionScreenSpaceBlurChildPass.cpp @@ -47,6 +47,9 @@ namespace AZ m_updateSrg = true; } + params.m_viewportState = RHI::Viewport(0, static_cast(m_imageSize.m_width), 0, static_cast(m_imageSize.m_height)); + params.m_scissorState = RHI::Scissor(0, 0, m_imageSize.m_width, m_imageSize.m_height); + FullscreenTrianglePass::FrameBeginInternal(params); } diff --git a/Gems/Atom/RPI/Code/Source/RPI.Public/Pass/FullscreenTrianglePass.cpp b/Gems/Atom/RPI/Code/Source/RPI.Public/Pass/FullscreenTrianglePass.cpp index aee4fc4f48..67a6fcaa5b 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Public/Pass/FullscreenTrianglePass.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Public/Pass/FullscreenTrianglePass.cpp @@ -181,9 +181,19 @@ namespace AZ RHI::Size targetImageSize = outputAttachment->m_descriptor.m_image.m_size; - // Base viewport and scissor off of target attachment - m_viewportState = RHI::Viewport(0, static_cast(targetImageSize.m_width), 0, static_cast(targetImageSize.m_height)); - m_scissorState = RHI::Scissor(0, 0, targetImageSize.m_width, targetImageSize.m_height); + m_viewportState = params.m_viewportState; + if (m_viewportState.IsNull()) + { + // compute viewport from target attachment + m_viewportState = RHI::Viewport(0, static_cast(targetImageSize.m_width), 0, static_cast(targetImageSize.m_height)); + } + + m_scissorState = params.m_scissorState; + if (m_scissorState.IsNull()) + { + // compute scissor from target attachment + m_scissorState = RHI::Scissor(0, 0, targetImageSize.m_width, targetImageSize.m_height); + } RenderPass::FrameBeginInternal(params); }