// Copyright (C) 2023 Jérôme "Lynix" Leclercq (lynix680@gmail.com) // This file is part of the "Nazara Engine - Graphics module" // For conditions of distribution and use, see copyright notice in Config.hpp #include #include namespace Nz { inline std::size_t FrameGraph::AddAttachment(FramePassAttachment attachment) { std::size_t id = m_attachments.size(); m_attachments.emplace_back(std::move(attachment)); return id; } inline std::size_t FrameGraph::AddAttachmentArray(FramePassAttachment attachment, std::size_t layerCount) { AttachmentArray attachmentArray{ std::move(attachment) }; attachmentArray.layerCount = layerCount; std::size_t id = m_attachments.size(); m_attachments.emplace_back(std::move(attachmentArray)); return id; } inline std::size_t FrameGraph::AddAttachmentArrayLayer(std::size_t attachmentId, std::size_t layerIndex) { attachmentId = ResolveAttachmentIndex(attachmentId); assert(std::holds_alternative(m_attachments[attachmentId])); assert(layerIndex < std::get(m_attachments[attachmentId]).layerCount); std::size_t id = m_attachments.size(); m_attachments.emplace_back(AttachmentLayer{ attachmentId, layerIndex }); return id; } inline std::size_t FrameGraph::AddAttachmentCube(FramePassAttachment attachment) { std::size_t id = m_attachments.size(); m_attachments.emplace_back(AttachmentCube{ std::move(attachment) }); return id; } inline std::size_t FrameGraph::AddAttachmentCubeFace(std::size_t attachmentId, CubemapFace face) { attachmentId = ResolveAttachmentIndex(attachmentId); assert(std::holds_alternative(m_attachments[attachmentId])); std::size_t id = m_attachments.size(); m_attachments.emplace_back(AttachmentLayer{ attachmentId, SafeCast(face) }); return id; } inline std::size_t FrameGraph::AddAttachmentProxy(std::string name, std::size_t attachmentId) { assert(attachmentId < m_attachments.size()); std::size_t id = m_attachments.size(); m_attachments.emplace_back(AttachmentProxy { attachmentId, std::move(name) }); return id; } inline void FrameGraph::AddBackbufferOutput(std::size_t backbufferOutput) { m_backbufferOutputs.push_back(backbufferOutput); } inline FramePass& FrameGraph::AddPass(std::string name) { std::size_t id = m_framePasses.size(); return m_framePasses.emplace_back(*this, id, std::move(name)); } } #include