Files
Seele/src/Engine/Graphics/RenderPass/RenderGraph.h
T

57 lines
1.0 KiB
C++
Raw Normal View History

2021-05-06 17:02:10 +02:00
#pragma once
2022-11-17 16:47:42 +01:00
#include "RenderPass.h"
2021-05-06 17:02:10 +02:00
namespace Seele
{
2024-04-05 10:41:59 +02:00
class RenderGraph
2021-05-06 17:02:10 +02:00
{
public:
2024-04-05 10:41:59 +02:00
RenderGraph()
2022-11-17 16:47:42 +01:00
{
2024-04-05 10:41:59 +02:00
res = new RenderGraphResources();
2022-11-17 16:47:42 +01:00
}
2024-04-05 10:41:59 +02:00
void addPass(ORenderPass pass)
{
pass->setResources(res);
passes.add(std::move(pass));
2022-11-17 16:47:42 +01:00
}
2024-04-05 10:41:59 +02:00
void setViewport(Gfx::PViewport viewport)
2022-11-17 16:47:42 +01:00
{
2024-04-05 10:41:59 +02:00
for (auto& pass : passes)
{
pass->setViewport(viewport);
}
}
void createRenderPass()
{
for (auto& pass : passes)
{
pass->publishOutputs();
}
for (auto& pass : passes)
{
pass->createRenderPass();
}
2022-11-17 16:47:42 +01:00
}
void render(const Component::Camera& cam)
{
2024-04-05 10:41:59 +02:00
for (auto& pass : passes)
{
pass->beginFrame(cam);
}
for (auto& pass : passes)
{
pass->render();
}
for (auto& pass : passes)
{
pass->endFrame();
}
2022-11-17 16:47:42 +01:00
}
private:
2024-04-05 10:41:59 +02:00
PRenderGraphResources res;
List<ORenderPass> passes;
2022-11-17 16:47:42 +01:00
};
2021-05-06 17:02:10 +02:00
} // namespace Seele