summaryrefslogtreecommitdiff
path: root/gfx
diff options
context:
space:
mode:
authorDan Goodliffe <dan@randomdan.homeip.net>2024-07-20 12:55:15 +0100
committerDan Goodliffe <dan@randomdan.homeip.net>2024-08-10 18:11:59 +0100
commit4ba67f34eac848e43bad2ccc4b5c09ac65dd7952 (patch)
tree999331eb0a08ab9c995e4d39b5d3980eb7f8018b /gfx
parentCalculate and store the extents of a mesh (diff)
downloadilt-4ba67f34eac848e43bad2ccc4b5c09ac65dd7952.tar.bz2
ilt-4ba67f34eac848e43bad2ccc4b5c09ac65dd7952.tar.xz
ilt-4ba67f34eac848e43bad2ccc4b5c09ac65dd7952.zip
Use mesh extents for shadow stencil extents
Diffstat (limited to 'gfx')
-rw-r--r--gfx/gl/shadowStenciller.cpp5
-rw-r--r--gfx/gl/shadowStenciller.h3
2 files changed, 4 insertions, 4 deletions
diff --git a/gfx/gl/shadowStenciller.cpp b/gfx/gl/shadowStenciller.cpp
index 6d5fa40..e20eda1 100644
--- a/gfx/gl/shadowStenciller.cpp
+++ b/gfx/gl/shadowStenciller.cpp
@@ -32,8 +32,7 @@ ShadowStenciller::createStencilTexture(GLsizei width, GLsizei height)
}
void
-ShadowStenciller::renderStencil(const glTexture & stencil, const MeshBase & mesh, const RelativePosition3D & mins,
- const RelativePosition3D & maxs) const
+ShadowStenciller::renderStencil(const glTexture & stencil, const MeshBase & mesh) const
{
glBindFramebuffer(GL_FRAMEBUFFER, fbo);
glFramebufferTexture(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, stencil, 0);
@@ -44,6 +43,8 @@ ShadowStenciller::renderStencil(const glTexture & stencil, const MeshBase & mesh
glClear(GL_DEPTH_BUFFER_BIT);
glViewport(0, 0, 256, 256);
glEnable(GL_DEPTH_TEST);
+ const auto & mins = mesh.minExtent();
+ const auto & maxs = mesh.maxExtent();
const auto extents = glm::ortho(mins.x, maxs.x, mins.z, maxs.z, mins.y, maxs.y);
const auto lightDir = glm::lookAt({}, north, up);
glUniform(viewProjectionLoc, extents * lightDir);
diff --git a/gfx/gl/shadowStenciller.h b/gfx/gl/shadowStenciller.h
index 460fa68..5a22a7e 100644
--- a/gfx/gl/shadowStenciller.h
+++ b/gfx/gl/shadowStenciller.h
@@ -11,8 +11,7 @@ public:
[[nodiscard]]
static glTexture createStencilTexture(GLsizei width, GLsizei height);
- void renderStencil(const glTexture &, const MeshBase &, const RelativePosition3D & mins,
- const RelativePosition3D & maxs) const;
+ void renderStencil(const glTexture &, const MeshBase &) const;
private:
glFrameBuffer fbo;