diff options
author | Dan Goodliffe <dan@randomdan.homeip.net> | 2024-09-23 20:12:48 +0100 |
---|---|---|
committer | Dan Goodliffe <dan@randomdan.homeip.net> | 2024-09-23 20:12:48 +0100 |
commit | dbbfd39eef3b4d063ab7cdeb8d139b1bc11ba72c (patch) | |
tree | 0a880b2d14ac152014649d32088b73f17bf77297 /gfx/gl/shadowStenciller.h | |
parent | Merge branch 'sunpos' (diff) | |
parent | Populate all layers of shadow stencil with view from all around (diff) | |
download | ilt-dbbfd39eef3b4d063ab7cdeb8d139b1bc11ba72c.tar.bz2 ilt-dbbfd39eef3b4d063ab7cdeb8d139b1bc11ba72c.tar.xz ilt-dbbfd39eef3b4d063ab7cdeb8d139b1bc11ba72c.zip |
Psycho-rebased branch billboard-shadows on top of main
Diffstat (limited to 'gfx/gl/shadowStenciller.h')
-rw-r--r-- | gfx/gl/shadowStenciller.h | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/gfx/gl/shadowStenciller.h b/gfx/gl/shadowStenciller.h new file mode 100644 index 0000000..2edb955 --- /dev/null +++ b/gfx/gl/shadowStenciller.h @@ -0,0 +1,24 @@ +#pragma once + +#include "gfx/gl/program.h" +#include "gfx/models/mesh.h" +#include "gfx/models/texture.h" +#include "glArrays.h" + +class ShadowStenciller { +public: + ShadowStenciller(); + + [[nodiscard]] + static glTexture createStencilTexture(GLsizei width, GLsizei height); + void setLightDirection(const Direction3D & lightDir, const Direction3D & lightDirUp); + void renderStencil(const glTexture &, const MeshBase &, const Texture::AnyPtr texture) const; + +private: + glFrameBuffer fbo; + Program shadowCaster; + Program::RequiredUniformLocation viewProjectionLoc {shadowCaster, "viewProjection"}; + + glm::mat4 lightDirMat {}; + std::array<glm::mat4, 8> viewProjections; +}; |