Hymn to Beauty
C++ 3D Engine
RenderScene.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <glm/glm.hpp>
4#include <vector>
6#include "DebugDrawing.hpp"
7
8namespace Video {
9
10namespace Geometry {
11class Geometry3D;
12}
13class Texture2D;
14
19 glm::vec3 direction;
20 glm::vec3 color;
22 };
23
25 std::vector<DirectionalLight> directionalLights;
26
28 struct PointLight {
29 glm::vec3 position;
30 glm::vec3 color;
31 float distance;
33 float intensity;
34 };
35
37 std::vector<PointLight> pointLights;
38
40 struct SpotLight {
41 glm::vec3 position;
42 glm::vec3 direction;
43 glm::vec3 color;
44 float distance;
46 float intensity;
47 float coneAngle;
48 };
49
51 std::vector<SpotLight> spotLights;
52
54 struct Camera {
55 glm::vec3 position;
56 glm::mat4 viewMatrix;
59 float zNear;
60 float zFar;
61 glm::vec4 viewport;
62 bool overlay;
63 uint32_t layerMask;
64
67 };
68
70 std::vector<Camera> cameras;
71
73 struct Mesh {
74 glm::mat4 modelMatrix;
80 uint32_t layerMask;
81 };
82
84 std::vector<Mesh> meshes;
85
87 struct Icon {
89 std::vector<glm::vec3> positions;
90 };
91
93 std::vector<Icon> icons;
94
96 std::vector<DebugDrawing::Point> debugDrawingPoints;
97
99 std::vector<DebugDrawing::Line> debugDrawingLines;
100
102 std::vector<DebugDrawing::Cuboid> debugDrawingCuboids;
103
105 std::vector<DebugDrawing::Plane> debugDrawingPlanes;
106
108 std::vector<DebugDrawing::Circle> debugDrawingCircles;
109
111 std::vector<DebugDrawing::Sphere> debugDrawingSpheres;
112
114 std::vector<DebugDrawing::Cylinder> debugDrawingCylinders;
115
117 std::vector<DebugDrawing::Cone> debugDrawingCones;
118
120 std::vector<DebugDrawing::Mesh> debugDrawingMeshes;
121
123 struct Sprite {
125 glm::mat4 modelMatrix;
126 glm::vec2 size;
127 glm::vec2 pivot;
128 glm::vec4 tint;
129 uint32_t layerMask;
130 };
131
132 std::vector<Sprite> sprites;
133};
134
135} // namespace Video
An axis-aligned bounding box.
Definition: AxisAlignedBoundingBox.hpp:12
Renderable 3D geometry.
Definition: Geometry3D.hpp:15
A two-dimensional texture.
Definition: Texture2D.hpp:10
Definition: AssetEditor.hpp:5
Definition: Editor.hpp:18
Post-processing configuration.
Definition: PostProcessing.hpp:21
A camera through which the scene should be rendered.
Definition: RenderScene.hpp:54
float zNear
Definition: RenderScene.hpp:59
uint32_t layerMask
Definition: RenderScene.hpp:63
float zFar
Definition: RenderScene.hpp:60
glm::mat4 viewMatrix
Definition: RenderScene.hpp:56
glm::mat4 projectionMatrix
Definition: RenderScene.hpp:57
glm::vec4 viewport
Definition: RenderScene.hpp:61
glm::mat4 viewProjectionMatrix
Definition: RenderScene.hpp:58
glm::vec3 position
Definition: RenderScene.hpp:55
Video::PostProcessing::Configuration postProcessingConfiguration
Configuration of post-processing effects.
Definition: RenderScene.hpp:66
bool overlay
Definition: RenderScene.hpp:62
A directional light source (like the sun).
Definition: RenderScene.hpp:18
glm::vec3 color
Definition: RenderScene.hpp:20
glm::vec3 direction
Definition: RenderScene.hpp:19
float ambientCoefficient
Definition: RenderScene.hpp:21
A billboarded texture.
Definition: RenderScene.hpp:87
Texture2D * texture
Definition: RenderScene.hpp:88
std::vector< glm::vec3 > positions
Definition: RenderScene.hpp:89
A mesh that should be rendered.
Definition: RenderScene.hpp:73
Geometry::Geometry3D * geometry
Definition: RenderScene.hpp:76
Texture2D * normal
Definition: RenderScene.hpp:78
Texture2D * albedo
Definition: RenderScene.hpp:77
AxisAlignedBoundingBox axisAlignedBoundingBox
Definition: RenderScene.hpp:75
Texture2D * roughnessMetallic
Definition: RenderScene.hpp:79
uint32_t layerMask
Definition: RenderScene.hpp:80
glm::mat4 modelMatrix
Definition: RenderScene.hpp:74
A point light.
Definition: RenderScene.hpp:28
glm::vec3 color
Definition: RenderScene.hpp:30
glm::vec3 position
Definition: RenderScene.hpp:29
float attenuation
Definition: RenderScene.hpp:32
float distance
Definition: RenderScene.hpp:31
float intensity
Definition: RenderScene.hpp:33
A spot light.
Definition: RenderScene.hpp:40
glm::vec3 color
Definition: RenderScene.hpp:43
float intensity
Definition: RenderScene.hpp:46
float attenuation
Definition: RenderScene.hpp:45
float distance
Definition: RenderScene.hpp:44
float coneAngle
Definition: RenderScene.hpp:47
glm::vec3 position
Definition: RenderScene.hpp:41
glm::vec3 direction
Definition: RenderScene.hpp:42
A sprite that should be rendered.
Definition: RenderScene.hpp:123
glm::vec4 tint
Definition: RenderScene.hpp:128
glm::vec2 size
Definition: RenderScene.hpp:126
uint32_t layerMask
Definition: RenderScene.hpp:129
glm::vec2 pivot
Definition: RenderScene.hpp:127
Texture2D * texture
Definition: RenderScene.hpp:124
glm::mat4 modelMatrix
Definition: RenderScene.hpp:125
Contains all data needed to render a scene.
Definition: RenderScene.hpp:16
std::vector< Sprite > sprites
Definition: RenderScene.hpp:132
std::vector< DebugDrawing::Cone > debugDrawingCones
Debug drawing cones.
Definition: RenderScene.hpp:117
std::vector< DebugDrawing::Mesh > debugDrawingMeshes
Debug drawing meshes.
Definition: RenderScene.hpp:120
std::vector< DebugDrawing::Cylinder > debugDrawingCylinders
Debug drawing cylinders.
Definition: RenderScene.hpp:114
std::vector< Icon > icons
The icons that should be rendered.
Definition: RenderScene.hpp:93
std::vector< DebugDrawing::Line > debugDrawingLines
Debug drawing lines.
Definition: RenderScene.hpp:99
std::vector< PointLight > pointLights
The point lights in the scene.
Definition: RenderScene.hpp:37
std::vector< DebugDrawing::Sphere > debugDrawingSpheres
Debug drawing spheres.
Definition: RenderScene.hpp:111
std::vector< DirectionalLight > directionalLights
The directional lights in the scene.
Definition: RenderScene.hpp:25
std::vector< SpotLight > spotLights
The spot lights in the scene.
Definition: RenderScene.hpp:51
std::vector< DebugDrawing::Circle > debugDrawingCircles
Debug drawing circles.
Definition: RenderScene.hpp:108
std::vector< Camera > cameras
The cameras through which to render the scene.
Definition: RenderScene.hpp:70
std::vector< Mesh > meshes
The meshes that should be rendered.
Definition: RenderScene.hpp:84
std::vector< DebugDrawing::Plane > debugDrawingPlanes
Debug drawing planes.
Definition: RenderScene.hpp:105
std::vector< DebugDrawing::Cuboid > debugDrawingCuboids
Debug drawing cuboids.
Definition: RenderScene.hpp:102
std::vector< DebugDrawing::Point > debugDrawingPoints
Debug drawing points.
Definition: RenderScene.hpp:96