From 0dd9c14ff8b20b825da1b0f8bd9952702b19affb Mon Sep 17 00:00:00 2001 From: Vanessa Ezekowitz Date: Sun, 4 Nov 2012 10:51:40 -0500 Subject: [PATCH] Added video settings filter options via config file - second try :-) Set one or more of these in the config to turn the related option on: mip_map = 1 anisotropic_filter = 1 bilinear_filter = 1 trilinear_filter = 1 --- src/clientmap.cpp | 9 +++++++++ src/defaultsettings.cpp | 5 +++++ src/guiMainMenu.h | 4 ++++ src/main.cpp | 14 +++++++++++--- 4 files changed, 29 insertions(+), 3 deletions(-) diff --git a/src/clientmap.cpp b/src/clientmap.cpp index 64d5656d4..02c9fe9b1 100644 --- a/src/clientmap.cpp +++ b/src/clientmap.cpp @@ -413,6 +413,10 @@ void ClientMap::renderMap(video::IVideoDriver* driver, s32 pass) m_last_drawn_sectors.clear(); } + bool use_trilinear_filter = g_settings->getBool("trilinear_filter"); + bool use_bilinear_filter = g_settings->getBool("bilinear_filter"); + bool use_anisotropic_filter = g_settings->getBool("anisotropic_filter"); + /* Get time for measuring timeout. @@ -544,6 +548,11 @@ void ClientMap::renderMap(video::IVideoDriver* driver, s32 pass) for(u32 i=0; igetMeshBuffer(i); + + buf->getMaterial().setFlag(video::EMF_TRILINEAR_FILTER, use_trilinear_filter); + buf->getMaterial().setFlag(video::EMF_BILINEAR_FILTER, use_bilinear_filter); + buf->getMaterial().setFlag(video::EMF_ANISOTROPIC_FILTER, use_anisotropic_filter); + const video::SMaterial& material = buf->getMaterial(); video::IMaterialRenderer* rnd = driver->getMaterialRenderer(material.MaterialType); diff --git a/src/defaultsettings.cpp b/src/defaultsettings.cpp index 3b37c18dc..6eaa28410 100644 --- a/src/defaultsettings.cpp +++ b/src/defaultsettings.cpp @@ -142,5 +142,10 @@ void set_default_settings(Settings *settings) settings->setDefault("full_block_send_enable_min_time_from_building", "2.0"); settings->setDefault("dedicated_server_step", "0.05"); settings->setDefault("ignore_world_load_errors", "false"); + settings->setDefault("mip_map", "false"); + settings->setDefault("anisotropic_filter", "false"); + settings->setDefault("bilinear_filter", "false"); + settings->setDefault("trilinear_filter", "false"); + } diff --git a/src/guiMainMenu.h b/src/guiMainMenu.h index 715deb47d..abfc6bdb4 100644 --- a/src/guiMainMenu.h +++ b/src/guiMainMenu.h @@ -41,6 +41,10 @@ struct MainMenuData bool smooth_lighting; bool clouds_3d; bool opaque_water; + bool mip_map; + bool anisotropic_filter; + bool bilinear_filter; + bool trilinear_filter; // Server options bool creative_mode; bool enable_damage; diff --git a/src/main.cpp b/src/main.cpp index 6075e9d10..dcc47cd6b 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1292,9 +1292,6 @@ int main(int argc, char *argv[]) video::IVideoDriver* driver = device->getVideoDriver(); - // Disable mipmaps (because some of them look ugly) - driver->setTextureCreationFlag(video::ETCF_CREATE_MIP_MAPS, false); - /* This changes the minimum allowed number of vertices in a VBO. Default is 500. @@ -1439,6 +1436,11 @@ int main(int argc, char *argv[]) menudata.smooth_lighting = g_settings->getBool("smooth_lighting"); menudata.clouds_3d = g_settings->getBool("enable_3d_clouds"); menudata.opaque_water = g_settings->getBool("opaque_water"); + menudata.mip_map = g_settings->getBool("mip_map"); + menudata.anisotropic_filter = g_settings->getBool("anisotropic_filter"); + menudata.bilinear_filter = g_settings->getBool("bilinear_filter"); + menudata.trilinear_filter = g_settings->getBool("trilinear_filter"); + driver->setTextureCreationFlag(video::ETCF_CREATE_MIP_MAPS, menudata.mip_map); menudata.creative_mode = g_settings->getBool("creative_mode"); menudata.enable_damage = g_settings->getBool("enable_damage"); // Default to selecting nothing @@ -1552,6 +1554,12 @@ int main(int argc, char *argv[]) g_settings->set("smooth_lighting", itos(menudata.smooth_lighting)); g_settings->set("enable_3d_clouds", itos(menudata.clouds_3d)); g_settings->set("opaque_water", itos(menudata.opaque_water)); + + g_settings->set("mip_map", itos(menudata.mip_map)); + g_settings->set("anisotropic_filter", itos(menudata.anisotropic_filter)); + g_settings->set("bilinear_filter", itos(menudata.bilinear_filter)); + g_settings->set("trilinear_filter", itos(menudata.trilinear_filter)); + g_settings->set("creative_mode", itos(menudata.creative_mode)); g_settings->set("enable_damage", itos(menudata.enable_damage)); g_settings->set("name", playername);