summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Goodliffe <dan@randomdan.homeip.net>2026-03-07 11:59:24 +0000
committerDan Goodliffe <dan@randomdan.homeip.net>2026-03-07 11:59:24 +0000
commit712007d8fccae219154a69c83827413025ca08be (patch)
treed4a983b4896d7d05870294b4f38de182fe55ec35
parentMerge branch 'glalloc' (diff)
downloadilt-712007d8fccae219154a69c83827413025ca08be.tar.bz2
ilt-712007d8fccae219154a69c83827413025ca08be.tar.xz
ilt-712007d8fccae219154a69c83827413025ca08be.zip
Don't create and then replace shadow and billboard textures
-rw-r--r--game/scenary/foliage.cpp4
-rw-r--r--gfx/gl/billboardPainter.cpp7
-rw-r--r--gfx/gl/billboardPainter.h3
-rw-r--r--gfx/gl/shadowStenciller.cpp7
-rw-r--r--gfx/gl/shadowStenciller.h3
5 files changed, 8 insertions, 16 deletions
diff --git a/game/scenary/foliage.cpp b/game/scenary/foliage.cpp
index cf2d82e..4e10ed9 100644
--- a/game/scenary/foliage.cpp
+++ b/game/scenary/foliage.cpp
@@ -43,8 +43,8 @@ Foliage::postLoad()
const auto & size = bodyMesh->getDimensions().size;
billboardSize = billboardTextureSizeForObject(size);
- shadowStencil = ShadowStenciller::createStencilTexture(billboardSize, billboardSize);
- billboard = BillboardPainter::createBillBoardTextures(billboardSize, billboardSize);
+ ShadowStenciller::configureStencilTexture(shadowStencil, billboardSize, billboardSize);
+ BillboardPainter::configureBillBoardTextures(billboard, billboardSize, billboardSize);
useMeshClipDist = (ASSUMED_VIEWPORT * OVER_SAMPLE_MULTIPLIER * size) / static_cast<RelativeDistance>(billboardSize);
}
diff --git a/gfx/gl/billboardPainter.cpp b/gfx/gl/billboardPainter.cpp
index 58fdce6..38c4d3e 100644
--- a/gfx/gl/billboardPainter.cpp
+++ b/gfx/gl/billboardPainter.cpp
@@ -38,11 +38,10 @@ BillboardPainter::getAngle() const
return angle;
}
-glTextures<3>
-BillboardPainter::createBillBoardTextures(GLsizei width, GLsizei height)
+void
+BillboardPainter::configureBillBoardTextures(glTextures<3> & textures, GLsizei width, GLsizei height)
{
glDebugScope _ {0};
- glTextures<3> textures;
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
const auto configuregdata = [width, height](const auto & texture, const GLint iformat, const GLenum format) {
@@ -56,8 +55,6 @@ BillboardPainter::createBillBoardTextures(GLsizei width, GLsizei height)
configuregdata(textures[0], GL_DEPTH_COMPONENT, GL_DEPTH_COMPONENT);
configuregdata(textures[1], GL_RGB8_SNORM, GL_RGB);
configuregdata(textures[2], GL_RGB5_A1, GL_RGBA);
-
- return textures;
}
void
diff --git a/gfx/gl/billboardPainter.h b/gfx/gl/billboardPainter.h
index 33c807c..0f6334a 100644
--- a/gfx/gl/billboardPainter.h
+++ b/gfx/gl/billboardPainter.h
@@ -13,8 +13,7 @@ public:
BillboardPainter();
- [[nodiscard]]
- static glTextures<3> createBillBoardTextures(GLsizei width, GLsizei height);
+ static void configureBillBoardTextures(glTextures<3> &, GLsizei width, GLsizei height);
void setView(Angle angle, const glm::mat4 &);
[[nodiscard]] Angle getAngle() const;
void renderBillBoard(const glTextures<3> &, const MeshBase &, Texture::AnyPtr texture) const;
diff --git a/gfx/gl/shadowStenciller.cpp b/gfx/gl/shadowStenciller.cpp
index 19c8bef..cc25f30 100644
--- a/gfx/gl/shadowStenciller.cpp
+++ b/gfx/gl/shadowStenciller.cpp
@@ -36,10 +36,9 @@ ShadowStenciller::getLightDirection() const
return lightDir;
}
-glTexture
-ShadowStenciller::createStencilTexture(GLsizei width, GLsizei height)
+void
+ShadowStenciller::configureStencilTexture(glTexture & stencil, GLsizei width, GLsizei height)
{
- glTexture stencil;
stencil.bind(GL_TEXTURE_2D_ARRAY);
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
@@ -50,8 +49,6 @@ ShadowStenciller::createStencilTexture(GLsizei width, GLsizei height)
glTexImage3D(GL_TEXTURE_2D_ARRAY, 0, GL_DEPTH_COMPONENT, width, height, STENCIL_ANGLES<GLint>, 0,
GL_DEPTH_COMPONENT, GL_UNSIGNED_BYTE, nullptr);
-
- return stencil;
}
void
diff --git a/gfx/gl/shadowStenciller.h b/gfx/gl/shadowStenciller.h
index 27ad9f9..028bfa1 100644
--- a/gfx/gl/shadowStenciller.h
+++ b/gfx/gl/shadowStenciller.h
@@ -13,8 +13,7 @@ public:
ShadowStenciller();
- [[nodiscard]]
- static glTexture createStencilTexture(GLsizei width, GLsizei height);
+ static void configureStencilTexture(glTexture &, GLsizei width, GLsizei height);
void setLightDirection(const LightDirection & lightDir);
[[nodiscard]] Direction2D getLightDirection() const;
void renderStencil(const glTexture &, const MeshBase &, Texture::AnyPtr texture) const;