Disable shaders GUI on unsupported drivers (#7563)
authorVitaliy <silverunicorn2011@yandex.ru>
Sat, 21 Jul 2018 07:26:40 +0000 (10:26 +0300)
committerLoïc Blot <nerzhul@users.noreply.github.com>
Sat, 21 Jul 2018 07:26:40 +0000 (09:26 +0200)
* Disable shaders GUI on unsupported drivers (#2060)

* Disable shaders if unavailable

builtin/mainmenu/tab_settings.lua
builtin/settingtypes.txt

index adf6c58ce04a5badb31aeeadc6568ab3a90e96c9..11611919e2e99be4715c3810323792726ef61b1d 100644 (file)
@@ -203,9 +203,22 @@ local function formspec(tabview, name, tabdata)
                "label[4.25,3.45;" .. fgettext("Screen:") .. "]" ..
                "checkbox[4.25,3.6;cb_autosave_screensize;" .. fgettext("Autosave Screen Size") .. ";"
                                .. dump(core.settings:get_bool("autosave_screensize")) .. "]" ..
-               "box[8,0;3.75,4.5;#999999]" ..
-               "checkbox[8.25,0;cb_shaders;" .. fgettext("Shaders") .. ";"
-                               .. dump(core.settings:get_bool("enable_shaders")) .. "]"
+               "box[8,0;3.75,4.5;#999999]"
+
+       local video_driver = core.settings:get("video_driver")
+       local shaders_supported = video_driver == "opengl"
+       local shaders_enabled = false
+       if shaders_supported then
+               shaders_enabled = core.settings:get_bool("enable_shaders")
+               tab_string = tab_string ..
+                       "checkbox[8.25,0;cb_shaders;" .. fgettext("Shaders") .. ";"
+                                       .. tostring(shaders_enabled) .. "]"
+       else
+               core.settings:set_bool("enable_shaders", false)
+               tab_string = tab_string ..
+                       "label[8.38,0.2;" .. core.colorize("#888888",
+                                       fgettext("Shaders (unavailable)")) .. "]"
+       end
 
        if PLATFORM == "Android" then
                tab_string = tab_string ..
@@ -229,7 +242,7 @@ local function formspec(tabview, name, tabdata)
                        ((tonumber(core.settings:get("touchscreen_threshold")) / 10) + 1) .. "]"
        end
 
-       if core.settings:get_bool("enable_shaders") then
+       if shaders_enabled then
                tab_string = tab_string ..
                        "checkbox[8.25,0.5;cb_bumpmapping;" .. fgettext("Bump Mapping") .. ";"
                                        .. dump(core.settings:get_bool("enable_bumpmapping")) .. "]" ..
index 9a62ae964c8018e967d0104e3cd8364bb9bd05e3..d7ff01b46bba1533e77807ee47b0e096b14147c2 100644 (file)
@@ -608,6 +608,10 @@ lighting_boost_spread (Light curve mid boost spread) float 0.2 0.0 1.0
 texture_path (Texture path) path
 
 #    The rendering back-end for Irrlicht.
+#    A restart is required after changing this.
+#    Note: on Android, stick with OGLES1 if unsure! App may fail to start otherwise.
+#    On other platforms, OpenGL is recommended, and it’s the only driver with
+#    shader support currently.
 video_driver (Video driver) enum opengl null,software,burningsvideo,direct3d8,direct3d9,opengl,ogles1,ogles2
 
 #    Radius of cloud area stated in number of 64 node cloud squares.