You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
o3de/Gems/Atom/RHI/Code/Source/RHI.Reflect/UnifiedScopeAttachmentDescr...

105 lines
3.8 KiB
C++

/*
* Copyright (c) Contributors to the Open 3D Engine Project.
* For complete copyright and license terms please see the LICENSE at the root of this distribution.
*
* SPDX-License-Identifier: Apache-2.0 OR MIT
*
*/
#include <AzCore/Serialization/SerializeContext.h>
#include <Atom/RHI.Reflect/UnifiedScopeAttachmentDescriptor.h>
namespace AZ
{
namespace RHI
{
UnifiedScopeAttachmentDescriptor::UnifiedScopeAttachmentDescriptor(
const AttachmentId& attachmentId,
const BufferViewDescriptor& bufferViewDescriptor,
const AttachmentLoadStoreAction& loadStoreAction)
: ScopeAttachmentDescriptor(attachmentId, loadStoreAction)
{
SetAsBuffer(bufferViewDescriptor);
}
UnifiedScopeAttachmentDescriptor::UnifiedScopeAttachmentDescriptor(
const AttachmentId& attachmentId,
const ImageViewDescriptor& imageViewDescriptor,
const AttachmentLoadStoreAction& loadStoreAction)
: ScopeAttachmentDescriptor(attachmentId, loadStoreAction)
{
SetAsImage(imageViewDescriptor);
}
UnifiedScopeAttachmentDescriptor::UnifiedScopeAttachmentDescriptor(
const AttachmentId& attachmentId,
const AttachmentId& resolveAttachmentId,
const ImageViewDescriptor& imageViewDescriptor,
const AttachmentLoadStoreAction& loadStoreAction)
: ScopeAttachmentDescriptor(attachmentId, loadStoreAction)
{
SetAsResolve(imageViewDescriptor, resolveAttachmentId);
}
// Setters...
void UnifiedScopeAttachmentDescriptor::SetAsBuffer(const BufferViewDescriptor& desc)
{
m_bufferViewDescriptor = desc;
m_type = AttachmentType::Buffer;
}
void UnifiedScopeAttachmentDescriptor::SetAsImage(const ImageViewDescriptor& desc)
{
m_imageViewDescriptor = desc;
m_type = AttachmentType::Image;
}
void UnifiedScopeAttachmentDescriptor::SetAsResolve(const ImageViewDescriptor& desc, AttachmentId resolveAttachmentId)
{
m_imageViewDescriptor = desc;
m_resolveAttachmentId = resolveAttachmentId;
m_type = AttachmentType::Resolve;
}
// Getters...
BufferScopeAttachmentDescriptor UnifiedScopeAttachmentDescriptor::GetAsBuffer() const
{
AZ_Assert(m_type == AttachmentType::Buffer, "UnifiedScopeAttachmentDescriptor type mismatch during casting");
return BufferScopeAttachmentDescriptor(m_attachmentId, m_bufferViewDescriptor, m_loadStoreAction);
}
ImageScopeAttachmentDescriptor UnifiedScopeAttachmentDescriptor::GetAsImage() const
{
AZ_Assert(m_type == AttachmentType::Image, "UnifiedScopeAttachmentDescriptor type mismatch during casting");
return ImageScopeAttachmentDescriptor(m_attachmentId, m_imageViewDescriptor, m_loadStoreAction);
}
ResolveScopeAttachmentDescriptor UnifiedScopeAttachmentDescriptor::GetAsResolve() const
{
AZ_Assert(m_type == AttachmentType::Resolve, "UnifiedScopeAttachmentDescriptor type mismatch during casting");
return ResolveScopeAttachmentDescriptor(m_attachmentId, m_resolveAttachmentId, m_imageViewDescriptor, m_loadStoreAction);
}
BufferViewDescriptor& UnifiedScopeAttachmentDescriptor::GetBufferViewDescriptor()
{
return m_bufferViewDescriptor;
}
ImageViewDescriptor& UnifiedScopeAttachmentDescriptor::GetImageViewDescriptor()
{
return m_imageViewDescriptor;
}
AttachmentType UnifiedScopeAttachmentDescriptor::GetType() const
{
return m_type;
}
}
}