Grindstone Game Engine v0.2.0
An open source game engine and toolkit.
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
7namespace Grindstone {
8 class WorldContextSet;
9
10 namespace GraphicsAPI {
11 class Buffer;
12 class DescriptorSet;
14 class RenderPass;
15 class Framebuffer;
16 class Image;
17 }
18
20 static constexpr size_t MAX_CASCADE_COUNT = 8;
21 struct ShadowData {
22 Grindstone::Math::Matrix4 shadowMatrix;
23 Grindstone::Math::Rect2D shadowRenderArea;
24 };
25
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}
Definition Buffer.hpp:49
Definition DescriptorSetLayout.hpp:14
Definition DescriptorSet.hpp:15
Definition Framebuffer.hpp:16
Definition Image.hpp:49
Definition RenderPass.hpp:10
Definition WorldContextSet.hpp:11
Definition DirectionalLightComponent.hpp:21
Definition DirectionalLightComponent.hpp:26
Definition DirectionalLightComponent.hpp:19
Definition Rect.hpp:11