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