Graphics: Add support for multi-viewer rendering (a bit hacky)
This commit is contained in:
@@ -26,6 +26,7 @@
|
||||
namespace Nz
|
||||
{
|
||||
class RenderFrame;
|
||||
class RenderTarget;
|
||||
|
||||
class NAZARA_GRAPHICS_API ForwardFramePipeline : public FramePipeline
|
||||
{
|
||||
@@ -99,6 +100,7 @@ namespace Nz
|
||||
std::unordered_map<AbstractViewer*, ViewerData> m_viewers;
|
||||
std::unordered_map<MaterialPass*, MaterialData> m_materials;
|
||||
std::unordered_map<WorldInstancePtr, std::unordered_map<const InstancedRenderable*, RenderableData>> m_renderables;
|
||||
std::unordered_map<const RenderTarget*, std::vector<const ViewerData*>> m_viewerPerTarget;
|
||||
std::unordered_set<AbstractViewer*> m_invalidatedViewerInstances;
|
||||
std::unordered_set<MaterialPass*> m_invalidatedMaterials;
|
||||
std::unordered_set<WorldInstance*> m_invalidatedWorldInstances;
|
||||
|
||||
@@ -31,12 +31,11 @@ namespace Nz
|
||||
~FrameGraph() = default;
|
||||
|
||||
inline std::size_t AddAttachment(FramePassAttachment attachment);
|
||||
inline void AddBackbufferOutput(std::size_t backbufferOutput);
|
||||
inline FramePass& AddPass(std::string name);
|
||||
|
||||
BakedFrameGraph Bake();
|
||||
|
||||
inline void SetBackbufferOutput(std::size_t backbufferOutput);
|
||||
|
||||
FrameGraph& operator=(const FrameGraph&) = delete;
|
||||
FrameGraph& operator=(FrameGraph&&) noexcept = default;
|
||||
|
||||
@@ -86,7 +85,6 @@ namespace Nz
|
||||
|
||||
struct WorkData
|
||||
{
|
||||
std::size_t backbufferResourceIndex;
|
||||
std::vector<std::shared_ptr<RenderPass>> renderPasses;
|
||||
std::vector<PhysicalPassData> physicalPasses;
|
||||
std::vector<TextureData> textures;
|
||||
@@ -109,7 +107,7 @@ namespace Nz
|
||||
void ReorderPasses();
|
||||
void TraverseGraph(std::size_t passIndex);
|
||||
|
||||
std::optional<std::size_t> m_backbufferOutput;
|
||||
std::vector<std::size_t> m_backbufferOutputs;
|
||||
std::vector<FramePass> m_framePasses;
|
||||
std::vector<FramePassAttachment> m_attachments;
|
||||
WorkData m_pending;
|
||||
|
||||
@@ -16,16 +16,16 @@ namespace Nz
|
||||
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));
|
||||
}
|
||||
|
||||
inline void FrameGraph::SetBackbufferOutput(std::size_t backbufferOutput)
|
||||
{
|
||||
m_backbufferOutput = backbufferOutput;
|
||||
}
|
||||
}
|
||||
|
||||
#include <Nazara/Graphics/DebugOff.hpp>
|
||||
|
||||
Reference in New Issue
Block a user