Luanti 5.15.0-dev
 
Loading...
Searching...
No Matches
dynamicshadows.h
Go to the documentation of this file.
1// Luanti
2// SPDX-License-Identifier: LGPL-2.1-or-later
3// Copyright (C) 2021 Liso <anlismon@gmail.com>
4
5#pragma once
6
8#include <matrix4.h>
9#include "constants.h"
10
11class Camera;
12class Client;
13
15{
16 f32 zNear{0.0f};
17 f32 zFar{0.0f};
18 f32 length{0.0f};
19 f32 radius{0.0f};
20 core::matrix4 ProjOrthMat;
21 core::matrix4 ViewMat;
24};
25
27{
28public:
29 DirectionalLight(const u32 shadowMapResolution,
30 const v3f &position,
31 video::SColorf lightColor = video::SColor(0xffffffff),
32 f32 farValue = 100.0f);
33 ~DirectionalLight() = default;
34
35 void updateCameraOffset(const Camera *cam);
36
37 void updateFrustum(const Camera *cam, Client *client);
38
39 // when set direction is updated to negative normalized(direction)
40 void setDirection(v3f dir);
42 return direction;
43 };
44 v3f getPosition() const;
45 v3f getPlayerPos() const;
46 v3f getFuturePlayerPos() const;
47
49 const core::matrix4 &getViewMatrix() const;
50 const core::matrix4 &getProjectionMatrix() const;
51 const core::matrix4 &getFutureViewMatrix() const;
52 const core::matrix4 &getFutureProjectionMatrix() const;
53 core::matrix4 getViewProjMatrix();
54
56 f32 getMaxFarValue() const
57 {
58 return farPlane * BS;
59 }
60
62 f32 getFarValue() const
63 {
64 return shadow_frustum.zFar;
65 }
66
67
69 const video::SColorf &getLightColor() const
70 {
71 return diffuseColor;
72 }
73
75 void setLightColor(const video::SColorf &lightColor)
76 {
77 diffuseColor = lightColor;
78 }
79
81 u32 getMapResolution() const
82 {
83 return mapRes;
84 }
85
88
89 void commitFrustum();
90
91private:
92 void createSplitMatrices(const Camera *cam);
93
94 video::SColorf diffuseColor;
95
97 u32 mapRes;
98
101
104
107 bool dirty{false};
108};
static v2f dir(const v2f &pos_dist)
Definition camera.cpp:207
Definition camera.h:61
Definition client.h:106
Definition dynamicshadows.h:27
v3f getPlayerPos() const
Definition dynamicshadows.cpp:147
bool should_update_map_shadow
If true, shadow map needs to be invalidated due to frustum change.
Definition dynamicshadows.h:87
u32 getMapResolution() const
Gets the shadow map resolution for this light.
Definition dynamicshadows.h:81
void updateFrustum(const Camera *cam, Client *client)
Definition dynamicshadows.cpp:103
DirectionalLight(const u32 shadowMapResolution, const v3f &position, video::SColorf lightColor=video::SColor(0xffffffff), f32 farValue=100.0f)
Definition dynamicshadows.cpp:87
void commitFrustum()
Definition dynamicshadows.cpp:127
core::matrix4 getViewProjMatrix()
Definition dynamicshadows.cpp:177
void setDirection(v3f dir)
Definition dynamicshadows.cpp:136
~DirectionalLight()=default
bool dirty
Definition dynamicshadows.h:107
f32 getFarValue() const
Gets the current far value of the light.
Definition dynamicshadows.h:62
f32 getMaxFarValue() const
Gets the light's maximum far value, i.e. the shadow boundary.
Definition dynamicshadows.h:56
const core::matrix4 & getFutureViewMatrix() const
Definition dynamicshadows.cpp:167
shadowFrustum shadow_frustum
Definition dynamicshadows.h:105
v3f getPosition() const
Definition dynamicshadows.cpp:142
void createSplitMatrices(const Camera *cam)
Definition dynamicshadows.cpp:17
v3f last_look
Definition dynamicshadows.h:103
void setLightColor(const video::SColorf &lightColor)
Sets the light's color.
Definition dynamicshadows.h:75
v3f direction
Definition dynamicshadows.h:100
const core::matrix4 & getViewMatrix() const
Gets the light's matrices.
Definition dynamicshadows.cpp:157
video::SColorf diffuseColor
Definition dynamicshadows.h:94
const core::matrix4 & getProjectionMatrix() const
Definition dynamicshadows.cpp:162
v3f getFuturePlayerPos() const
Definition dynamicshadows.cpp:152
v3f last_cam_pos_world
Definition dynamicshadows.h:102
v3f pos
Definition dynamicshadows.h:99
u32 mapRes
Definition dynamicshadows.h:97
void updateCameraOffset(const Camera *cam)
Definition dynamicshadows.cpp:94
v3f getDirection() const
Definition dynamicshadows.h:41
f32 farPlane
Definition dynamicshadows.h:96
const video::SColorf & getLightColor() const
Gets the light's color.
Definition dynamicshadows.h:69
const core::matrix4 & getFutureProjectionMatrix() const
Definition dynamicshadows.cpp:172
shadowFrustum future_frustum
Definition dynamicshadows.h:106
#define BS
Definition constants.h:61
core::vector3df v3f
Definition irr_v3d.h:11
Definition activeobjectmgr.cpp:11
Definition dynamicshadows.h:15
f32 radius
Definition dynamicshadows.h:19
v3f position
Definition dynamicshadows.h:22
f32 zFar
Definition dynamicshadows.h:17
f32 length
Definition dynamicshadows.h:18
v3f player
Definition dynamicshadows.h:23
f32 zNear
Definition dynamicshadows.h:16
core::matrix4 ViewMat
Definition dynamicshadows.h:21
core::matrix4 ProjOrthMat
Definition dynamicshadows.h:20