6#include <brenta/renderer/renderer.hpp>
7#include <brenta/renderer/pipeline.hpp>
8#include <brenta/window.hpp>
10using namespace brenta;
22void Renderer::begin_frame()
28void Renderer::begin_frame(
Camera& cam,
int width,
int height)
31 Renderer::set_camera(cam, width, height);
35void Renderer::set_camera(
Camera& cam,
int width,
int height)
37 Renderer::data.projection =
38 cam.get_projection_matrix(width, height);
39 Renderer::data.view = cam.get_view_matrix();
40 Renderer::data.cam_position = cam.get_transform().get_pos();
41 Renderer::data.width = width;
42 Renderer::data.height = height;
48 Renderer::data.transparent_queue.push_back(it);
50 Renderer::data.opaque_queue.push_back(it);
53void Renderer::submit_point_light(tenno::shared_ptr<PointLight> point_light)
55 Renderer::data.point_lights.push_back(point_light);
58void Renderer::submit_point_lights(
const tenno::vector<tenno::shared_ptr<PointLight>> &point_lights)
60 Renderer::data.point_lights.reserve(Renderer::data.point_lights.size()
61 + point_lights.size());
62 Renderer::data.point_lights.insert(Renderer::data.point_lights.end(),
67void Renderer::submit_dir_light(tenno::shared_ptr<DirLight> dir_light)
69 Renderer::data.dir_light = dir_light;
72void Renderer::submit_text(
const Text& text)
74 Renderer::data.ui_queue.push_back(text);
77void Renderer::submit_skybox(tenno::shared_ptr<Skybox> skybox)
79 Renderer::data.skybox = skybox;
82void Renderer::end_frame(tenno::shared_ptr<RenderPipeline> pipeline)
84 Renderer::flush(pipeline);
89 Renderer::data.opaque_queue.clear();
90 Renderer::data.transparent_queue.clear();
91 Renderer::data.ui_queue.clear();
92 Renderer::data.point_lights.clear();
93 Renderer::data.dir_light = {};
94 Renderer::data.skybox = {};
97void Renderer::flush(tenno::shared_ptr<RenderPipeline> pipeline)
99 pipeline->execute(Renderer::data);