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); }