Avoid filtering low-res textures for animated meshes (incl. players) (#6562)
authorlhofhansl <lhofhansl@yahoo.com>
Sat, 28 Oct 2017 08:33:47 +0000 (01:33 -0700)
committerLoïc Blot <nerzhul@users.noreply.github.com>
Sat, 28 Oct 2017 08:33:47 +0000 (10:33 +0200)
src/content_cao.cpp

index 7178debaa2ab529b44c819f78f03239960504a5d..8bc9ad88e2aecff2be55fc9dc1b35b82c8a176cb 100644 (file)
@@ -1028,6 +1028,13 @@ void GenericCAO::updateTextures(std::string mod)
                                material.setFlag(video::EMF_LIGHTING, false);
                                material.setFlag(video::EMF_BILINEAR_FILTER, false);
 
+                               // don't filter low-res textures, makes them look blurry
+                               // player models have a res of 64
+                               const core::dimension2d<u32> &size = texture->getOriginalSize();
+                               const u32 res = std::min(size.Height, size.Width);
+                               use_trilinear_filter &= res > 64;
+                               use_bilinear_filter &= res > 64;
+
                                m_animated_meshnode->getMaterial(i)
                                                .setFlag(video::EMF_TRILINEAR_FILTER, use_trilinear_filter);
                                m_animated_meshnode->getMaterial(i)