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 <Common/Math.hpp>
4#include <Common/Rect.hpp>
5
6#include <EngineCore/Reflection/ComponentReflection.hpp>
7#include <EngineCore/ECS/Entity.hpp>
8
9namespace Grindstone {
10 class WorldContextSet;
11
12 namespace GraphicsAPI {
13 class Buffer;
14 class DescriptorSet;
16 class RenderPass;
17 class Framebuffer;
18 class Image;
19 }
20
22 static constexpr size_t MAX_CASCADE_COUNT = 8;
23 struct ShadowData {
24 Grindstone::Math::Matrix4 shadowMatrix;
25 Grindstone::Math::Rect2D shadowRenderArea;
26 };
27
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}
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 Buffer.hpp:9
Definition Assert.hpp:16
Definition DirectionalLightComponent.hpp:23
Definition DirectionalLightComponent.hpp:28
Definition DirectionalLightComponent.hpp:21
Definition FloatVectors.cs:119
Definition Rect.hpp:11