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

46 lines
1.1 KiB
C++
Raw Normal View History

2021-05-06 17:02:10 +02:00
#pragma once
2024-06-15 21:47:20 +02:00
#include "RenderGraphResources.h"
2022-11-17 16:47:42 +01:00
#include "RenderPass.h"
2021-05-06 17:02:10 +02:00
2024-06-09 12:20:04 +02:00
namespace Seele {
class RenderGraph {
public:
RenderGraph() { res = new RenderGraphResources(); }
void addPass(ORenderPass pass) {
2024-04-05 10:41:59 +02:00
pass->setResources(res);
2024-06-09 12:20:04 +02:00
passes.add(std::move(pass));
2022-11-17 16:47:42 +01:00
}
2024-06-09 12:20:04 +02:00
void setViewport(Gfx::PViewport viewport) {
for (auto& pass : passes) {
2024-04-05 10:41:59 +02:00
pass->setViewport(viewport);
}
}
2024-06-09 12:20:04 +02:00
void createRenderPass() {
for (auto& pass : passes) {
2024-04-05 10:41:59 +02:00
pass->publishOutputs();
}
2024-06-09 12:20:04 +02:00
for (auto& pass : passes) {
2024-04-05 10:41:59 +02:00
pass->createRenderPass();
}
2022-11-17 16:47:42 +01:00
}
2025-04-11 23:13:19 +02:00
void render(const Component::Camera& cam, const Component::Transform& transform) {
2024-06-09 12:20:04 +02:00
for (auto& pass : passes) {
2025-04-11 23:13:19 +02:00
pass->beginFrame(cam, transform);
2024-04-05 10:41:59 +02:00
}
2024-06-09 12:20:04 +02:00
for (auto& pass : passes) {
2024-04-05 10:41:59 +02:00
pass->render();
}
2024-06-09 12:20:04 +02:00
for (auto& pass : passes) {
2024-04-05 10:41:59 +02:00
pass->endFrame();
}
2022-11-17 16:47:42 +01:00
}
2024-06-15 21:47:20 +02:00
PRenderGraphResources getResources() {
return res;
}
2024-06-09 12:20:04 +02: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