Grindstone Game Engine
v0.2.0
An open source game engine and toolkit.
Toggle main menu visibility
Loading...
Searching...
No Matches
DirectionalLightComponent.hpp
1
#pragma once
2
3
#include "EngineCore/Reflection/ComponentReflection.hpp"
4
#include "EngineCore/ECS/Entity.hpp"
5
#include "Common/Math.hpp"
6
7
namespace
Grindstone {
8
class
WorldContextSet
;
9
10
namespace
GraphicsAPI {
11
class
Buffer
;
12
class
DescriptorSet
;
13
class
DescriptorSetLayout
;
14
class
RenderPass
;
15
class
Framebuffer
;
16
class
Image
;
17
}
18
19
struct
DirectionalLightComponent
{
20
static
constexpr
size_t
MAX_CASCADE_COUNT = 8;
21
struct
ShadowData
{
22
Grindstone::Math::Matrix4 shadowMatrix;
23
Grindstone::Math::Rect2D
shadowRenderArea;
24
};
25
26
struct
UniformStruct
{
27
ShadowData
shadowData[MAX_CASCADE_COUNT];
28
float
cascadeDistances[MAX_CASCADE_COUNT];
29
Grindstone::Math::Matrix4 cameraViewMatrix;
30
Math::Float3 color;
31
uint32_t cascadeCount;
32
Math::Float3 direction;
33
float
padding0;
// padded for shaders.
34
Math::Float3 eyePosForShadowing;
35
};
36
37
static
void
Construct(
Grindstone::WorldContextSet
& cxtSet, entt::entity);
38
static
void
Destroy(
Grindstone::WorldContextSet
& cxtSet, entt::entity);
39
40
glm::vec3 eyePosForShadowing;
41
Grindstone::Math::Matrix4 debugCameraProjectionMatrix;
42
Grindstone::Math::Matrix4 debugCameraViewMatrix;
43
Grindstone::Math::Matrix4 debugShadowProjectionMatrix[8];
44
Grindstone::Math::Matrix4 shadowProjectionMatrix[8];
45
Grindstone::Math::Matrix4 shadowViewMatrix[8];
46
Grindstone::Math::Matrix4 shadowProjViewMatrix[8];
47
Grindstone::Math::Rect2D
shadowRenderArea[8];
48
float
cascadeDistances[8];
49
uint32_t cascadeCount = 4;
50
Math::Float3 color = Math::Float3(1.0f, 1.0f, 1.0f);
51
float
intensity = 100.0f;
52
53
GraphicsAPI::Buffer
* uniformBufferObject =
nullptr
;
54
GraphicsAPI::DescriptorSet
* descriptorSet =
nullptr
;
55
GraphicsAPI::DescriptorSetLayout
* descriptorSetLayout =
nullptr
;
56
57
GraphicsAPI::Buffer
* shadowMapUniformBufferObjects[MAX_CASCADE_COUNT];
58
GraphicsAPI::DescriptorSet
* shadowMapDescriptorSets[MAX_CASCADE_COUNT];
59
GraphicsAPI::DescriptorSetLayout
* shadowMapDescriptorSetLayout =
nullptr
;
60
61
REFLECT(
"DirectionalLight"
)
62
};
63
}
Grindstone::GraphicsAPI::Buffer
Definition
Buffer.hpp:49
Grindstone::GraphicsAPI::DescriptorSetLayout
Definition
DescriptorSetLayout.hpp:14
Grindstone::GraphicsAPI::DescriptorSet
Definition
DescriptorSet.hpp:15
Grindstone::GraphicsAPI::Framebuffer
Definition
Framebuffer.hpp:16
Grindstone::GraphicsAPI::Image
Definition
Image.hpp:49
Grindstone::GraphicsAPI::RenderPass
Definition
RenderPass.hpp:10
Grindstone::WorldContextSet
Definition
WorldContextSet.hpp:11
Grindstone::DirectionalLightComponent::ShadowData
Definition
DirectionalLightComponent.hpp:21
Grindstone::DirectionalLightComponent::UniformStruct
Definition
DirectionalLightComponent.hpp:26
Grindstone::DirectionalLightComponent
Definition
DirectionalLightComponent.hpp:19
Grindstone::Math::Rect2D
Definition
Rect.hpp:11
sources
code
EngineCore
CoreComponents
Lights
DirectionalLightComponent.hpp
Generated by
1.17.0