Wieldmesh: don't force anisotropic filtering on, instead disable mipmaps
authorKahrl <kahrl@gmx.net>
Wed, 26 Nov 2014 14:17:17 +0000 (15:17 +0100)
committerKahrl <kahrl@gmx.net>
Wed, 26 Nov 2014 14:17:17 +0000 (15:17 +0100)
This should fix #1844. Thanks to oleastre for making the first version
of this commit (#1848).

src/wieldmesh.cpp
src/wieldmesh.h

index 40cfdbc2ba95d1077dfbc26087419b4759cfe8d1..ac0832057b77819834bf45ed7ec6bce1e06f01a1 100644 (file)
@@ -206,6 +206,7 @@ WieldMeshSceneNode::WieldMeshSceneNode(
        m_bounding_box(0.0, 0.0, 0.0, 0.0, 0.0, 0.0)
 {
        m_enable_shaders = g_settings->getBool("enable_shaders");
+       m_anisotropic_filter = g_settings->getBool("anisotropic_filter");
        m_bilinear_filter = g_settings->getBool("bilinear_filter");
        m_trilinear_filter = g_settings->getBool("trilinear_filter");
 
@@ -280,14 +281,16 @@ void WieldMeshSceneNode::setExtruded(const std::string &imagename,
        material.setFlag(video::EMF_BACK_FACE_CULLING, true);
        // Enable filtering only for high resolution texures
        if (dim.Width > 32) {
+               material.setFlag(video::EMF_ANISOTROPIC_FILTER, m_anisotropic_filter);
                material.setFlag(video::EMF_BILINEAR_FILTER, m_bilinear_filter);
                material.setFlag(video::EMF_TRILINEAR_FILTER, m_trilinear_filter);
        } else {
+               material.setFlag(video::EMF_ANISOTROPIC_FILTER, false);
                material.setFlag(video::EMF_BILINEAR_FILTER, false);
                material.setFlag(video::EMF_TRILINEAR_FILTER, false);
        }
-       // anisotropic filtering removes "thin black line" artifacts
-       material.setFlag(video::EMF_ANISOTROPIC_FILTER, true);
+       // mipmaps cause "thin black line" artifacts
+       material.setFlag(video::EMF_USE_MIP_MAPS, false);
        if (m_enable_shaders) 
                material.setTexture(2, tsrc->getTexture("disable_img.png"));
 }
index 14bd85bca97ebe9ddc047d8d5c55e99cb1aa8459..3b39dbfac3820d6eb9dc9b8e6ab680d57a731010 100644 (file)
@@ -64,6 +64,7 @@ private:
        bool m_lighting;
 
        bool m_enable_shaders;
+       bool m_anisotropic_filter;
        bool m_bilinear_filter;
        bool m_trilinear_filter;