Grindstone Game Engine v0.2.0
An open source game engine and toolkit.
Loading...
Searching...
No Matches
PointLightComponent.hpp
1#pragma once
2
3#include "EngineCore/Reflection/ComponentReflection.hpp"
4#include "EngineCore/ECS/Entity.hpp"
5#include "Common/Math.hpp"
6#include "Common/Rect.hpp"
7
8namespace Grindstone {
9 class WorldContextSet;
10
11 namespace GraphicsAPI {
12 class Buffer;
13 class RenderPass;
14 class Framebuffer;
15 class DepthStencilTarget;
16 class DescriptorSet;
18 }
19
21 struct ShadowData {
22 Grindstone::Math::Matrix4 shadowMatrix;
23 Grindstone::Math::Rect2D shadowRenderArea;
24 };
25
27 ShadowData shadowData[6];
28 glm::vec3 lightPosition = glm::vec3(1, 2, 1);
29 float lightAttenuationRadius = 40.0f;
30 glm::vec3 lightColor = glm::vec3(3, 0.8, 0.4);
31 float dummy;
32 };
33
34 static void Construct(Grindstone::WorldContextSet& cxtSet, entt::entity);
35 static void Destroy(Grindstone::WorldContextSet& cxtSet, entt::entity);
36
37 ShadowData shadowData[6];
38 Math::Float3 color = Math::Float3(1.0f, 0.8f, 0.6f);
39 float attenuationRadius = 16.0f;
40 float intensity = 16.0f;
41
42 GraphicsAPI::Buffer* uniformBufferObject = nullptr;
43 GraphicsAPI::DescriptorSet* descriptorSet = nullptr;
44 GraphicsAPI::DescriptorSetLayout* descriptorSetLayout = nullptr;
45
46 GraphicsAPI::Buffer* shadowMapUniformBufferObjects[6];
47 GraphicsAPI::DescriptorSet* shadowMapDescriptorSets[6];
48 GraphicsAPI::DescriptorSetLayout* shadowMapDescriptorSetLayout = nullptr;
49
50 REFLECT("PointLight")
51 };
52}
Definition Buffer.hpp:49
Definition DescriptorSetLayout.hpp:14
Definition DescriptorSet.hpp:15
Definition Framebuffer.hpp:16
Definition RenderPass.hpp:10
Definition WorldContextSet.hpp:11
Definition Rect.hpp:11
Definition PointLightComponent.hpp:21
Definition PointLightComponent.hpp:26
Definition PointLightComponent.hpp:20