diff options
| author | Dan Goodliffe <dan@randomdan.homeip.net> | 2026-03-07 11:59:24 +0000 |
|---|---|---|
| committer | Dan Goodliffe <dan@randomdan.homeip.net> | 2026-03-07 11:59:24 +0000 |
| commit | 712007d8fccae219154a69c83827413025ca08be (patch) | |
| tree | d4a983b4896d7d05870294b4f38de182fe55ec35 | |
| parent | Merge branch 'glalloc' (diff) | |
| download | ilt-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.cpp | 4 | ||||
| -rw-r--r-- | gfx/gl/billboardPainter.cpp | 7 | ||||
| -rw-r--r-- | gfx/gl/billboardPainter.h | 3 | ||||
| -rw-r--r-- | gfx/gl/shadowStenciller.cpp | 7 | ||||
| -rw-r--r-- | gfx/gl/shadowStenciller.h | 3 |
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; |
