Merge pull request #1508 from aws-lumberyard-dev/Atom/dmcdiar/ATOM-15787

[ATOM-15787] FullscreenTrianglePass incorrectly sets the scissor dimensions
This commit is contained in:
dmcdiarmid-ly
2021-06-23 03:09:36 -07:00
committed by GitHub
2 changed files with 15 additions and 14 deletions
@@ -47,8 +47,12 @@ namespace AZ
m_updateSrg = true;
}
params.m_viewportState = RHI::Viewport(0, static_cast<float>(m_imageSize.m_width), 0, static_cast<float>(m_imageSize.m_height));
params.m_scissorState = RHI::Scissor(0, 0, m_imageSize.m_width, m_imageSize.m_height);
float inverseScale = 1.0f / m_outputScale;
uint32_t outputWidth = m_imageSize.m_width * inverseScale;
uint32_t outputHeight = m_imageSize.m_height * inverseScale;
params.m_viewportState = RHI::Viewport(0, static_cast<float>(outputWidth), 0, static_cast<float>(outputHeight));
params.m_scissorState = RHI::Scissor(0, 0, outputWidth, outputHeight);
FullscreenTrianglePass::FrameBeginInternal(params);
}
@@ -24,6 +24,7 @@
#include <AzCore/Asset/AssetCommon.h>
#include <AzCore/Asset/AssetManagerBus.h>
#include <AzCore/std/algorithm.h>
namespace AZ
{
@@ -181,19 +182,15 @@ namespace AZ
RHI::Size targetImageSize = outputAttachment->m_descriptor.m_image.m_size;
m_viewportState = params.m_viewportState;
if (m_viewportState.IsNull())
{
// compute viewport from target attachment
m_viewportState = RHI::Viewport(0, static_cast<float>(targetImageSize.m_width), 0, static_cast<float>(targetImageSize.m_height));
}
m_viewportState.m_minX = 0.0f;
m_viewportState.m_minY = 0.0f;
m_viewportState.m_maxX = AZStd::min(static_cast<uint32_t>(params.m_viewportState.m_maxX), targetImageSize.m_width);
m_viewportState.m_maxY = AZStd::min(static_cast<uint32_t>(params.m_viewportState.m_maxY), 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);
}
m_scissorState.m_minX = 0.0f;
m_scissorState.m_minY = 0.0f;
m_scissorState.m_maxX = AZStd::min(static_cast<uint32_t>(params.m_scissorState.m_maxX), targetImageSize.m_width);
m_scissorState.m_maxY = AZStd::min(static_cast<uint32_t>(params.m_scissorState.m_maxY), targetImageSize.m_height);
RenderPass::FrameBeginInternal(params);
}