summaryrefslogtreecommitdiff
path: root/gfx/gl/shadowMapper.h
diff options
context:
space:
mode:
Diffstat (limited to 'gfx/gl/shadowMapper.h')
-rw-r--r--gfx/gl/shadowMapper.h14
1 files changed, 8 insertions, 6 deletions
diff --git a/gfx/gl/shadowMapper.h b/gfx/gl/shadowMapper.h
index 82374cb..8b5e0b6 100644
--- a/gfx/gl/shadowMapper.h
+++ b/gfx/gl/shadowMapper.h
@@ -5,10 +5,10 @@
#include "gfx/gl/shadowStenciller.h"
#include "lib/glArrays.h"
#include "program.h"
+#include <array>
#include <gfx/models/texture.h>
#include <glm/vec2.hpp>
#include <span>
-#include <vector>
class SceneProvider;
class Camera;
@@ -20,11 +20,12 @@ public:
static constexpr std::size_t SHADOW_BANDS {4};
- using Definitions = std::vector<glm::mat4x4>;
- using Sizes = std::vector<RelativePosition3D>;
+ using Definitions = std::array<glm::mat4, SHADOW_BANDS>;
+ using Sizes = std::array<RelativePosition3D, SHADOW_BANDS>;
const Frustum & preFrame(const LightDirection & direction, const Camera &);
- [[nodiscard]] Definitions update(const SceneProvider &, const LightDirection & direction, const Camera &) const;
+ [[nodiscard]] std::span<const glm::mat4> update(
+ const SceneProvider &, const LightDirection & direction, const Camera &) const;
class ShadowProgram : public Program {
public:
@@ -74,12 +75,13 @@ public:
}
private:
- [[nodiscard]] static std::vector<std::array<RelativePosition3D, 4>> getBandViewExtents(
- const Camera &, const glm::mat4 & lightView);
+ using BandViewExtents = std::array<std::array<RelativePosition3D, 4>, SHADOW_BANDS + 1>;
+ [[nodiscard]] static size_t getBandViewExtents(BandViewExtents &, const Camera &, const glm::mat4 & lightView);
glFrameBuffer depthMapFBO;
glTexture depthMap;
TextureAbsCoord size;
+ BandViewExtents bandViewExtents;
Definitions definitions;
Sizes sizes;
Frustum frustum;