SolarSim
Loading...
Searching...
No Matches
renderer.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <scene/entity.hpp>
4#include <glm/mat4x4.hpp>
5#include <glm/vec3.hpp>
6#include <imgui.h>
7
8namespace solarsim {
9 class Registry;
10
17 class Renderer {
18 public:
19 Renderer();
20 ~Renderer();
21
28 void render();
29
34
36 struct CameraUBO {
37 glm::vec3 pos; float pad0;
38 glm::mat4 view;
39 glm::mat4 proj;
40 glm::mat4 viewProj;
41 };
42
44 struct LightData {
46 glm::vec4 pos;
48 glm::vec4 color;
49 };
50
52 struct LightsUBO {
54 int count = 0;
55 float pad0[3];
56 };
57
59 struct RBData {
61 glm::vec4 mPos;
62 };
63
65 struct RBUBO {
67 int count = 0;
68 float pad0[3];
69 };
70
71 private:
81 void bindLightUBOS(Registry& reg);
86 void bindRigidBodyUBOS(Registry& reg);
87
92 void renderGrid(Registry& reg);
93
98 void renderLights(Registry& reg);
99
104 void renderMeshes(Registry& reg);
105
109 void renderGui(Registry& reg);
110
112 uint32_t cameraUBO;
114 uint32_t lightsUBO;
116 uint32_t rbUBO;
118 bool showGrid = true;
120 glm::vec4 clearColor = glm::vec4(0.0f, 0.0f, 0.0f, 1.0f);
121 };
122
123}
124
Manages entities and their components in the ECS.
Definition registry.hpp:16
void toggleGrid()
Toggle grid visibility.
Definition renderer.hpp:33
uint32_t cameraUBO
Definition renderer.hpp:112
uint32_t rbUBO
Definition renderer.hpp:116
void renderMeshes(Registry &reg)
Render all mesh entities.
Definition renderer.cpp:183
uint32_t lightsUBO
Definition renderer.hpp:114
void bindCameraMatrices(Registry &reg)
Bind camera matrices to UBO.
Definition renderer.cpp:78
void bindRigidBodyUBOS(Registry &reg)
Bind rigid body data to UBO.
Definition renderer.cpp:118
void renderGrid(Registry &reg)
Render the debug grid.
Definition renderer.cpp:135
void render()
Execute one frame of rendering.
Definition renderer.cpp:54
void renderGui(Registry &reg)
Toggle grid visibility.
Definition renderer.cpp:212
~Renderer()
Definition renderer.cpp:48
glm::vec4 clearColor
Definition renderer.hpp:120
void renderLights(Registry &reg)
Render all light entities.
Definition renderer.cpp:159
Renderer()
Definition renderer.cpp:28
bool showGrid
Definition renderer.hpp:118
void bindLightUBOS(Registry &reg)
Bind light data to UBO.
Definition renderer.cpp:103
Definition engine.cpp:23
Definition renderer.hpp:36
glm::mat4 viewProj
Definition renderer.hpp:40
float pad0
Definition renderer.hpp:37
glm::mat4 proj
Definition renderer.hpp:39
glm::mat4 view
Definition renderer.hpp:38
glm::vec3 pos
Definition renderer.hpp:37
Definition renderer.hpp:44
glm::vec4 color
Definition renderer.hpp:48
glm::vec4 pos
Definition renderer.hpp:46
Definition renderer.hpp:52
float pad0[3]
Definition renderer.hpp:55
LightData lights[64]
Definition renderer.hpp:53
int count
Definition renderer.hpp:54
Definition renderer.hpp:59
glm::vec4 mPos
Definition renderer.hpp:61
Definition renderer.hpp:65
float pad0[3]
Definition renderer.hpp:68
int count
Definition renderer.hpp:67
RBData rbs[64]
Definition renderer.hpp:66