Graphics/PipelinePassList: Add support for attachment proxy
This commit is contained in:
committed by
Jérôme Leclercq
parent
578240cd6f
commit
db58921cc4
@@ -46,6 +46,7 @@ namespace Nz
|
||||
~PipelinePassList() = default;
|
||||
|
||||
inline std::size_t AddAttachment(FramePassAttachment attachment);
|
||||
inline std::size_t AddAttachmentProxy(std::string name, std::size_t attachmentIndex);
|
||||
inline std::size_t AddPass(std::string name, std::size_t implIndex, ParameterList parameterList = {});
|
||||
|
||||
std::vector<std::unique_ptr<FramePipelinePass>> BuildPasses(FramePipelinePass::PassData& passData) const;
|
||||
@@ -73,6 +74,12 @@ namespace Nz
|
||||
private:
|
||||
static constexpr std::size_t NoAttachment = std::numeric_limits<std::size_t>::max();
|
||||
|
||||
struct AttachmentProxy
|
||||
{
|
||||
std::string name;
|
||||
std::size_t attachmentIndex;
|
||||
};
|
||||
|
||||
struct Pass
|
||||
{
|
||||
std::size_t depthStencilInput = NoAttachment;
|
||||
@@ -86,7 +93,7 @@ namespace Nz
|
||||
};
|
||||
|
||||
std::size_t m_finalOutputAttachment;
|
||||
std::vector<FramePassAttachment> m_attachments;
|
||||
std::vector<std::variant<FramePassAttachment, AttachmentProxy>> m_attachments;
|
||||
std::vector<Pass> m_passes;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -15,6 +15,14 @@ namespace Nz
|
||||
return index;
|
||||
}
|
||||
|
||||
inline std::size_t PipelinePassList::AddAttachmentProxy(std::string name, std::size_t attachmentIndex)
|
||||
{
|
||||
std::size_t index = m_attachments.size();
|
||||
m_attachments.emplace_back(AttachmentProxy{ std::move(name), attachmentIndex });
|
||||
|
||||
return index;
|
||||
}
|
||||
|
||||
inline std::size_t PipelinePassList::AddPass(std::string name, std::size_t implIndex, ParameterList parameterList)
|
||||
{
|
||||
std::size_t index = m_passes.size();
|
||||
|
||||
Reference in New Issue
Block a user