mirror of https://github.com/minetest/minetest.git
Added settings for Anisotropic Filtering, Mip-Map, Bi- and Tri-Linear
filtering. Can be changed by either flipping some new checkboxes in the "Settings" menu or by editing the config file (the checkboxes are saved along with everything else as usual).
This commit is contained in:
parent
25cf3757b2
commit
d2ca031406
|
@ -544,6 +544,11 @@ void ClientMap::renderMap(video::IVideoDriver* driver, s32 pass)
|
|||
for(u32 i=0; i<c; i++)
|
||||
{
|
||||
scene::IMeshBuffer *buf = mesh->getMeshBuffer(i);
|
||||
|
||||
buf->getMaterial().setFlag(video::EMF_TRILINEAR_FILTER, g_settings->getBool("trilinear_filter"));
|
||||
buf->getMaterial().setFlag(video::EMF_BILINEAR_FILTER, g_settings->getBool("bilinear_filter"));
|
||||
buf->getMaterial().setFlag(video::EMF_ANISOTROPIC_FILTER, g_settings->getBool("anisotropic_filter"));
|
||||
|
||||
const video::SMaterial& material = buf->getMaterial();
|
||||
video::IMaterialRenderer* rnd =
|
||||
driver->getMaterialRenderer(material.MaterialType);
|
||||
|
|
|
@ -98,6 +98,10 @@ enum
|
|||
GUI_ID_SMOOTH_LIGHTING_CB,
|
||||
GUI_ID_3D_CLOUDS_CB,
|
||||
GUI_ID_OPAQUE_WATER_CB,
|
||||
GUI_ID_MIPMAP_CB,
|
||||
GUI_ID_ANISOTROPIC_CB,
|
||||
GUI_ID_BILINEAR_CB,
|
||||
GUI_ID_TRILINEAR_CB,
|
||||
GUI_ID_DAMAGE_CB,
|
||||
GUI_ID_CREATIVE_CB,
|
||||
GUI_ID_JOIN_GAME_BUTTON,
|
||||
|
@ -580,6 +584,38 @@ void GUIMainMenu::regenerateGui(v2u32 screensize)
|
|||
Environment->addCheckBox(m_data->opaque_water, rect, this,
|
||||
GUI_ID_OPAQUE_WATER_CB, wgettext("Opaque water"));
|
||||
}
|
||||
|
||||
|
||||
// Anisotropic/mipmap/bi-/trilinear settings
|
||||
|
||||
{
|
||||
core::rect<s32> rect(0, 0, option_w+20, 30);
|
||||
rect += m_topleft_client + v2s32(option_x+175, option_y);
|
||||
Environment->addCheckBox(m_data->mip_map, rect, this,
|
||||
GUI_ID_MIPMAP_CB, wgettext("Mip-Mapping"));
|
||||
}
|
||||
|
||||
{
|
||||
core::rect<s32> rect(0, 0, option_w+20, 30);
|
||||
rect += m_topleft_client + v2s32(option_x+175, option_y+20);
|
||||
Environment->addCheckBox(m_data->anisotropic_filter, rect, this,
|
||||
GUI_ID_ANISOTROPIC_CB, wgettext("Anisotropic Filtering"));
|
||||
}
|
||||
|
||||
{
|
||||
core::rect<s32> rect(0, 0, option_w+20, 30);
|
||||
rect += m_topleft_client + v2s32(option_x+175, option_y+20*2);
|
||||
Environment->addCheckBox(m_data->bilinear_filter, rect, this,
|
||||
GUI_ID_BILINEAR_CB, wgettext("Bi-Linear Filtering"));
|
||||
}
|
||||
|
||||
{
|
||||
core::rect<s32> rect(0, 0, option_w+20, 30);
|
||||
rect += m_topleft_client + v2s32(option_x+175, option_y+20*3);
|
||||
Environment->addCheckBox(m_data->trilinear_filter, rect, this,
|
||||
GUI_ID_TRILINEAR_CB, wgettext("Tri-Linear Filtering"));
|
||||
}
|
||||
|
||||
// Key change button
|
||||
{
|
||||
core::rect<s32> rect(0, 0, 120, 30);
|
||||
|
@ -760,6 +796,30 @@ void GUIMainMenu::readInput(MainMenuData *dst)
|
|||
dst->opaque_water = ((gui::IGUICheckBox*)e)->isChecked();
|
||||
}
|
||||
|
||||
{
|
||||
gui::IGUIElement *e = getElementFromId(GUI_ID_MIPMAP_CB);
|
||||
if(e != NULL && e->getType() == gui::EGUIET_CHECK_BOX)
|
||||
dst->mip_map = ((gui::IGUICheckBox*)e)->isChecked();
|
||||
}
|
||||
|
||||
{
|
||||
gui::IGUIElement *e = getElementFromId(GUI_ID_ANISOTROPIC_CB);
|
||||
if(e != NULL && e->getType() == gui::EGUIET_CHECK_BOX)
|
||||
dst->anisotropic_filter = ((gui::IGUICheckBox*)e)->isChecked();
|
||||
}
|
||||
|
||||
{
|
||||
gui::IGUIElement *e = getElementFromId(GUI_ID_BILINEAR_CB);
|
||||
if(e != NULL && e->getType() == gui::EGUIET_CHECK_BOX)
|
||||
dst->bilinear_filter = ((gui::IGUICheckBox*)e)->isChecked();
|
||||
}
|
||||
|
||||
{
|
||||
gui::IGUIElement *e = getElementFromId(GUI_ID_TRILINEAR_CB);
|
||||
if(e != NULL && e->getType() == gui::EGUIET_CHECK_BOX)
|
||||
dst->trilinear_filter = ((gui::IGUICheckBox*)e)->isChecked();
|
||||
}
|
||||
|
||||
{
|
||||
gui::IGUIElement *e = getElementFromId(GUI_ID_WORLD_LISTBOX);
|
||||
if(e != NULL && e->getType() == gui::EGUIET_LIST_BOX)
|
||||
|
|
|
@ -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;
|
||||
|
|
14
src/main.cpp
14
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);
|
||||
|
|
Loading…
Reference in New Issue