diff --git a/builtin/mainmenu/tab_settings.lua b/builtin/mainmenu/tab_settings.lua index 8307ca7e2..21c77aa8e 100644 --- a/builtin/mainmenu/tab_settings.lua +++ b/builtin/mainmenu/tab_settings.lua @@ -220,11 +220,19 @@ local function formspec(tabview, name, tabdata) "checkbox[8.25,1.5;cb_waving_leaves;" .. fgettext("Waving Leaves") .. ";" .. dump(core.settings:get_bool("enable_waving_leaves")) .. "]" .. "checkbox[8.25,2;cb_waving_plants;" .. fgettext("Waving Plants") .. ";" - .. dump(core.settings:get_bool("enable_waving_plants")) .. "]".. - "label[8.25,2.8;" .. fgettext("Dynamic shadows:") .. "]" .. - "label[8.25,3.2;" .. fgettext("(game support required)") .. "]" .. + .. dump(core.settings:get_bool("enable_waving_plants")) .. "]" + + if video_driver == "opengl" then + tab_string = tab_string .. + "label[8.25,2.8;" .. fgettext("Dynamic shadows:") .. "]" .. + "label[8.25,3.2;" .. fgettext("(game support required)") .. "]" .. "dropdown[8.25,3.7;3.5;dd_shadows;" .. dd_options.shadow_levels[1] .. ";" .. getSettingIndex.ShadowMapping() .. "]" + else + tab_string = tab_string .. + "label[8.38,2.7;" .. core.colorize("#888888", + fgettext("Dynamic shadows")) .. "]" + end else tab_string = tab_string .. "label[8.38,0.7;" .. core.colorize("#888888", diff --git a/src/client/render/core.cpp b/src/client/render/core.cpp index 55cc4e490..ca5d3c614 100644 --- a/src/client/render/core.cpp +++ b/src/client/render/core.cpp @@ -35,6 +35,13 @@ RenderingCore::RenderingCore(IrrlichtDevice *_device, Client *_client, Hud *_hud screensize = driver->getScreenSize(); virtual_size = screensize; + // disable if unsupported + if (g_settings->getBool("enable_dynamic_shadows") && ( + g_settings->get("video_driver") != "opengl" || + !g_settings->getBool("enable_shaders"))) { + g_settings->setBool("enable_dynamic_shadows", false); + } + if (g_settings->getBool("enable_shaders") && g_settings->getBool("enable_dynamic_shadows")) { shadow_renderer = new ShadowRenderer(device, client);