SleakEngine
1.0.0
C++23 multi-backend game engine
Loading...
Searching...
No Matches
SpotLight.cpp
Go to the documentation of this file.
1
#include <
Lighting/SpotLight.hpp
>
2
#include <
Graphics/Common/ConstantBuffer.hpp
>
3
4
namespace
Sleak
{
5
6
SpotLight::SpotLight
(
const
std::string& name) :
Light
(name) {}
7
8
RenderEngine::LightGPUEntry
SpotLight::BuildGPUData
()
const
{
9
RenderEngine::LightGPUEntry
entry{};
10
11
entry.
PositionX
= m_position.GetX();
12
entry.
PositionY
= m_position.GetY();
13
entry.
PositionZ
= m_position.GetZ();
14
entry.
Type
= 2;
// Spot
15
16
entry.
DirectionX
= m_direction.GetX();
17
entry.
DirectionY
= m_direction.GetY();
18
entry.
DirectionZ
= m_direction.GetZ();
19
entry.
Intensity
=
m_intensity
;
20
21
entry.
ColorR
=
m_color
.GetX();
22
entry.
ColorG
=
m_color
.GetY();
23
entry.
ColorB
=
m_color
.GetZ();
24
entry.
Range
= m_range;
25
26
// Convert degrees to cosines for GPU
27
float
innerRad =
28
m_innerAngleDeg *
static_cast<
float
>
(
M_PI
) / 180.0f;
29
float
outerRad =
30
m_outerAngleDeg *
static_cast<
float
>
(
M_PI
) / 180.0f;
31
entry.
SpotInnerCos
= std::cos(innerRad);
32
entry.
SpotOuterCos
= std::cos(outerRad);
33
entry.
AreaWidth
= 0.0f;
34
entry.
AreaHeight
= 0.0f;
35
36
return
entry;
37
}
38
39
}
// namespace Sleak
ConstantBuffer.hpp
SpotLight.hpp
M_PI
#define M_PI
Definition
SpotLight.hpp:8
Sleak::Light::m_color
Math::Vector3D m_color
Definition
Light.hpp:57
Sleak::Light::Light
Light(const std::string &name="Light")
Definition
Light.cpp:5
Sleak::Light::m_intensity
float m_intensity
Definition
Light.hpp:58
Sleak::SpotLight::SpotLight
SpotLight(const std::string &name="SpotLight")
Definition
SpotLight.cpp:6
Sleak::SpotLight::BuildGPUData
RenderEngine::LightGPUEntry BuildGPUData() const override
Packs this light's parameters into the GPU-side entry used by the lighting constant buffer.
Definition
SpotLight.cpp:8
Sleak
Root namespace for everything the engine exposes.
Definition
Camera.hpp:10
Sleak::RenderEngine::LightGPUEntry
One light's packed GPU representation, laid out for std140/cbuffer alignment.
Definition
ConstantBuffer.hpp:20
Sleak::RenderEngine::LightGPUEntry::SpotInnerCos
float SpotInnerCos
Definition
ConstantBuffer.hpp:34
Sleak::RenderEngine::LightGPUEntry::Range
float Range
Definition
ConstantBuffer.hpp:31
Sleak::RenderEngine::LightGPUEntry::AreaHeight
float AreaHeight
Definition
ConstantBuffer.hpp:37
Sleak::RenderEngine::LightGPUEntry::AreaWidth
float AreaWidth
Definition
ConstantBuffer.hpp:36
Sleak::RenderEngine::LightGPUEntry::Type
uint32_t Type
Definition
ConstantBuffer.hpp:23
Sleak::RenderEngine::LightGPUEntry::DirectionY
float DirectionY
Definition
ConstantBuffer.hpp:26
Sleak::RenderEngine::LightGPUEntry::PositionY
float PositionY
Definition
ConstantBuffer.hpp:22
Sleak::RenderEngine::LightGPUEntry::Intensity
float Intensity
Definition
ConstantBuffer.hpp:27
Sleak::RenderEngine::LightGPUEntry::PositionX
float PositionX
Definition
ConstantBuffer.hpp:22
Sleak::RenderEngine::LightGPUEntry::ColorB
float ColorB
Definition
ConstantBuffer.hpp:30
Sleak::RenderEngine::LightGPUEntry::DirectionX
float DirectionX
Definition
ConstantBuffer.hpp:26
Sleak::RenderEngine::LightGPUEntry::DirectionZ
float DirectionZ
Definition
ConstantBuffer.hpp:26
Sleak::RenderEngine::LightGPUEntry::ColorG
float ColorG
Definition
ConstantBuffer.hpp:30
Sleak::RenderEngine::LightGPUEntry::SpotOuterCos
float SpotOuterCos
Definition
ConstantBuffer.hpp:35
Sleak::RenderEngine::LightGPUEntry::ColorR
float ColorR
Definition
ConstantBuffer.hpp:30
Sleak::RenderEngine::LightGPUEntry::PositionZ
float PositionZ
Definition
ConstantBuffer.hpp:22
src
Lighting
SpotLight.cpp
Generated on
for SleakEngine by
1.16.1