summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Goodliffe <dan@randomdan.homeip.net>2025-03-11 00:56:37 +0000
committerDan Goodliffe <dan@randomdan.homeip.net>2025-03-11 01:13:59 +0000
commitb992bc4902feb22666407067ece3fb4acbcb8d6a (patch)
treedc0b35623d439c0bb4d84a4c26a68e403520d9c1
parentAdd a spike of terrain in test-render (diff)
downloadilt-b992bc4902feb22666407067ece3fb4acbcb8d6a.tar.bz2
ilt-b992bc4902feb22666407067ece3fb4acbcb8d6a.tar.xz
ilt-b992bc4902feb22666407067ece3fb4acbcb8d6a.zip
Cull terrain meshes from render that don't cast a shadow into the frustum
-rw-r--r--game/terrain.cpp8
1 files changed, 5 insertions, 3 deletions
diff --git a/game/terrain.cpp b/game/terrain.cpp
index e9e9463..d3c1d1a 100644
--- a/game/terrain.cpp
+++ b/game/terrain.cpp
@@ -128,12 +128,14 @@ Terrain::render(const SceneShader & shader, const Frustum & frustum) const
}
void
-Terrain::shadows(const ShadowMapper & shadowMapper, const Frustum &) const
+Terrain::shadows(const ShadowMapper & shadowMapper, const Frustum & frustum) const
{
shadowMapper.landmess.use();
for (const auto & [surface, sab] : meshes) {
- glBindVertexArray(sab.vertexArray);
- glDrawElements(GL_TRIANGLES, sab.count, GL_UNSIGNED_INT, nullptr);
+ if (frustum.shadedBy(sab.aabb)) {
+ glBindVertexArray(sab.vertexArray);
+ glDrawElements(GL_TRIANGLES, sab.count, GL_UNSIGNED_INT, nullptr);
+ }
}
glBindVertexArray(0);
}