diff --git a/src/guiMainMenu.cpp b/src/guiMainMenu.cpp index 0bdb44e5..c711577b 100644 --- a/src/guiMainMenu.cpp +++ b/src/guiMainMenu.cpp @@ -102,6 +102,8 @@ enum GUI_ID_ANISOTROPIC_CB, GUI_ID_BILINEAR_CB, GUI_ID_TRILINEAR_CB, + GUI_ID_SHADERS_CB, + GUI_ID_PRELOAD_ITEM_VISUALS_CB, GUI_ID_DAMAGE_CB, GUI_ID_CREATIVE_CB, GUI_ID_JOIN_GAME_BUTTON, @@ -616,6 +618,21 @@ void GUIMainMenu::regenerateGui(v2u32 screensize) GUI_ID_TRILINEAR_CB, wgettext("Tri-Linear Filtering")); } + // shader/on demand image loading settings + { + core::rect rect(0, 0, option_w+20, 30); + rect += m_topleft_client + v2s32(option_x+175*2, option_y); + Environment->addCheckBox(m_data->enable_shaders, rect, this, + GUI_ID_SHADERS_CB, wgettext("Shaders")); + } + + { + core::rect rect(0, 0, option_w+20+20, 30); + rect += m_topleft_client + v2s32(option_x+175*2, option_y+20); + Environment->addCheckBox(m_data->preload_item_visuals, rect, this, + GUI_ID_PRELOAD_ITEM_VISUALS_CB, wgettext("Preload item visuals")); + } + // Key change button { core::rect rect(0, 0, 120, 30); @@ -820,6 +837,18 @@ void GUIMainMenu::readInput(MainMenuData *dst) dst->trilinear_filter = ((gui::IGUICheckBox*)e)->isChecked(); } + { + gui::IGUIElement *e = getElementFromId(GUI_ID_SHADERS_CB); + if(e != NULL && e->getType() == gui::EGUIET_CHECK_BOX) + dst->enable_shaders = ((gui::IGUICheckBox*)e)->isChecked() ? 2 : 0; + } + + { + gui::IGUIElement *e = getElementFromId(GUI_ID_PRELOAD_ITEM_VISUALS_CB); + if(e != NULL && e->getType() == gui::EGUIET_CHECK_BOX) + dst->preload_item_visuals = ((gui::IGUICheckBox*)e)->isChecked(); + } + { gui::IGUIElement *e = getElementFromId(GUI_ID_WORLD_LISTBOX); if(e != NULL && e->getType() == gui::EGUIET_LIST_BOX) diff --git a/src/guiMainMenu.h b/src/guiMainMenu.h index abfc6bdb..60420246 100644 --- a/src/guiMainMenu.h +++ b/src/guiMainMenu.h @@ -45,6 +45,8 @@ struct MainMenuData bool anisotropic_filter; bool bilinear_filter; bool trilinear_filter; + int enable_shaders; + bool preload_item_visuals; // Server options bool creative_mode; bool enable_damage; diff --git a/src/main.cpp b/src/main.cpp index dcc47cd6..73757cbe 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1440,6 +1440,8 @@ int main(int argc, char *argv[]) menudata.anisotropic_filter = g_settings->getBool("anisotropic_filter"); menudata.bilinear_filter = g_settings->getBool("bilinear_filter"); menudata.trilinear_filter = g_settings->getBool("trilinear_filter"); + menudata.enable_shaders = g_settings->getS32("enable_shaders"); + menudata.preload_item_visuals = g_settings->getBool("preload_item_visuals"); 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"); @@ -1560,6 +1562,9 @@ int main(int argc, char *argv[]) g_settings->set("bilinear_filter", itos(menudata.bilinear_filter)); g_settings->set("trilinear_filter", itos(menudata.trilinear_filter)); + g_settings->setS32("enable_shaders", menudata.enable_shaders); + g_settings->set("preload_item_visuals", itos(menudata.preload_item_visuals)); + g_settings->set("creative_mode", itos(menudata.creative_mode)); g_settings->set("enable_damage", itos(menudata.enable_damage)); g_settings->set("name", playername);