summaryrefslogtreecommitdiff
path: root/src/client/shadows/dynamicshadows.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/shadows/dynamicshadows.h')
-rw-r--r--src/client/shadows/dynamicshadows.h9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/client/shadows/dynamicshadows.h b/src/client/shadows/dynamicshadows.h
index a53612f7c..d8be66be8 100644
--- a/src/client/shadows/dynamicshadows.h
+++ b/src/client/shadows/dynamicshadows.h
@@ -34,6 +34,7 @@ struct shadowFrustum
core::matrix4 ProjOrthMat;
core::matrix4 ViewMat;
v3f position;
+ v3s16 camera_offset;
};
class DirectionalLight
@@ -47,7 +48,7 @@ public:
//DISABLE_CLASS_COPY(DirectionalLight)
- void update_frustum(const Camera *cam, Client *client);
+ void update_frustum(const Camera *cam, Client *client, bool force = false);
// when set direction is updated to negative normalized(direction)
void setDirection(v3f dir);
@@ -59,6 +60,8 @@ public:
/// Gets the light's matrices.
const core::matrix4 &getViewMatrix() const;
const core::matrix4 &getProjectionMatrix() const;
+ const core::matrix4 &getFutureViewMatrix() const;
+ const core::matrix4 &getFutureProjectionMatrix() const;
core::matrix4 getViewProjMatrix();
/// Gets the light's far value.
@@ -88,6 +91,8 @@ public:
bool should_update_map_shadow{true};
+ void commitFrustum();
+
private:
void createSplitMatrices(const Camera *cam);
@@ -99,4 +104,6 @@ private:
v3f pos;
v3f direction{0};
shadowFrustum shadow_frustum;
+ shadowFrustum future_frustum;
+ bool dirty{false};
};