2021-05-06 17:02:10 +02:00
|
|
|
#pragma once
|
|
|
|
|
#include "MinimalEngine.h"
|
|
|
|
|
#include "Graphics/GraphicsResources.h"
|
|
|
|
|
#include "RenderPass.h"
|
|
|
|
|
|
|
|
|
|
namespace Seele
|
|
|
|
|
{
|
2021-09-29 22:12:56 +02:00
|
|
|
DECLARE_REF(ViewFrame)
|
2021-05-06 17:02:10 +02:00
|
|
|
class RenderGraph
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
RenderGraph();
|
|
|
|
|
~RenderGraph();
|
|
|
|
|
void setup();
|
2021-09-29 22:12:56 +02:00
|
|
|
void addRenderPass(UPRenderPass renderPass);
|
|
|
|
|
void render(PViewFrame viewFrame);
|
2021-05-06 17:02:10 +02:00
|
|
|
Gfx::PRenderTargetAttachment requestRenderTarget(const std::string& outputName);
|
2021-05-10 23:57:55 +02:00
|
|
|
Gfx::PTexture requestTexture(const std::string& outputName);
|
|
|
|
|
Gfx::PStructuredBuffer requestBuffer(const std::string& outputName);
|
2021-06-12 18:51:29 +02:00
|
|
|
Gfx::PUniformBuffer requestUniform(const std::string& outputName);
|
2021-05-10 23:57:55 +02:00
|
|
|
void registerRenderPassOutput(const std::string& outputName, Gfx::PRenderTargetAttachment attachment);
|
|
|
|
|
void registerTextureOutput(const std::string& outputName, Gfx::PTexture buffer);
|
|
|
|
|
void registerBufferOutput(const std::string& outputName, Gfx::PStructuredBuffer buffer);
|
2021-06-12 18:51:29 +02:00
|
|
|
void registerUniformOutput(const std::string& outputName, Gfx::PUniformBuffer buffer);
|
2021-05-06 17:02:10 +02:00
|
|
|
private:
|
|
|
|
|
Map<std::string, Gfx::PRenderTargetAttachment> registeredAttachments;
|
2021-05-10 23:57:55 +02:00
|
|
|
Map<std::string, Gfx::PTexture> registeredTextures;
|
|
|
|
|
Map<std::string, Gfx::PStructuredBuffer> registeredBuffers;
|
2021-06-12 18:51:29 +02:00
|
|
|
Map<std::string, Gfx::PUniformBuffer> registeredUniforms;
|
2021-09-29 22:12:56 +02:00
|
|
|
List<UPRenderPass> renderPasses;
|
2021-05-06 17:02:10 +02:00
|
|
|
};
|
|
|
|
|
DEFINE_REF(RenderGraph)
|
|
|
|
|
} // namespace Seele
|