Brenta Engine 1.2
Loading...
Searching...
No Matches
pipeline.cpp
1// SPDX-License-Identifier: MIT
2// Author: Giovanni Santini
3// Mail: giovanni.santini@proton.me
4// Github: @San7o
5
6#include <brenta/window.hpp>
7#include <brenta/renderer/pipeline.hpp>
8
9#include <brenta/renderer/passes/opaque_pass.hpp>
10#include <brenta/renderer/passes/transparent_pass.hpp>
11#include <brenta/renderer/passes/ui_pass.hpp>
12#include <brenta/renderer/passes/skybox_pass.hpp>
13
14using namespace brenta;
15
16void RenderPipeline::add_pass(tenno::shared_ptr<RenderPass> pass)
17{
18 this->passes.push_back(pass);
19}
20
21void RenderPipeline::execute(const Renderer::RenderData& data)
22{
23 for (auto& pass : this->passes)
24 {
25 pass->begin();
26 pass->execute(data);
27 pass->end();
28 }
29}
30
31tenno::shared_ptr<RenderPipeline> RenderPipeline::create_default()
32{
33 auto fb = Window::framebuffer;
34 auto pipeline = tenno::make_shared<RenderPipeline>();
35
36 pipeline->add_pass<OpaquePass>(fb, true);
37 pipeline->add_pass<TransparentPass>(fb);
38 pipeline->add_pass<SkyboxPass>(fb);
39 pipeline->add_pass<UiPass>(fb);
40
41 return pipeline;
42}