From ff15b413b0ce3a40b72e57cadc40c0bdfdfc9e5f Mon Sep 17 00:00:00 2001 From: cx384 Date: Fri, 24 Oct 2025 15:47:36 +0200 Subject: [PATCH] Don't use bilinear/trilinear filter on small overlay if large base texture --- games/devtest/mods/testitems/init.lua | 7 +++++++ src/client/wieldmesh.cpp | 6 +++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/games/devtest/mods/testitems/init.lua b/games/devtest/mods/testitems/init.lua index 90407109a..a5535c346 100644 --- a/games/devtest/mods/testitems/init.lua +++ b/games/devtest/mods/testitems/init.lua @@ -53,6 +53,13 @@ core.register_craftitem("testitems:overlay_global", { color = GLOBAL_COLOR_ARG, }) +core.register_craftitem("testitems:overlay_size", { + description = S("Texture Overlay Test Item, Big Base Small Overlay") .. "\n" .. + S("Wield overlay should not be blurry."), + inventory_image = "[fill:1000x1000:#FFFFFF", + inventory_overlay = "testitems_overlay_overlay.png", +}) + core.register_craftitem("testitems:image_meta", { description = S("Image Override Meta Test Item"), inventory_image = "default_apple.png", diff --git a/src/client/wieldmesh.cpp b/src/client/wieldmesh.cpp index 36d9525fb..dc43a5d45 100644 --- a/src/client/wieldmesh.cpp +++ b/src/client/wieldmesh.cpp @@ -350,8 +350,12 @@ void WieldMeshSceneNode::setExtruded(video::ITexture *texture, material.MaterialTypeParam = 0.5f; material.BackfaceCulling = true; // don't filter low-res textures, makes them look blurry - bool f_ok = std::min(dim.Width, dim.Height) >= TEXTURE_FILTER_MIN_SIZE; material.forEachTexture([=] (auto &tex) { + video::ITexture *t = tex.Texture; + if (!t) + return; + core::dimension2d d = t->getSize(); + bool f_ok = std::min(d.Width, d.Height) >= TEXTURE_FILTER_MIN_SIZE; setMaterialFilters(tex, m_bilinear_filter && f_ok, m_trilinear_filter && f_ok, m_anisotropic_filter); });