diff options
| -rw-r--r-- | doc/classes/ProjectSettings.xml | 3 | ||||
| -rw-r--r-- | main/main.cpp | 10 |
2 files changed, 11 insertions, 2 deletions
diff --git a/doc/classes/ProjectSettings.xml b/doc/classes/ProjectSettings.xml index ffb61ab20d..57387aa65a 100644 --- a/doc/classes/ProjectSettings.xml +++ b/doc/classes/ProjectSettings.xml @@ -2226,7 +2226,8 @@ [b]Note:[/b] Depth prepass is only supported when using the Forward+ or Compatibility rendering method. When using the Mobile rendering method, there is no depth prepass performed. </member> <member name="rendering/driver/threads/thread_model" type="int" setter="" getter="" default="1"> - Thread model for rendering. Rendering on a thread can vastly improve performance, but synchronizing to the main thread can cause a bit more jitter. + The thread model to use for rendering. Rendering on a thread may improve performance, but synchronizing to the main thread can cause a bit more jitter. + [b]Note:[/b] The [b]Multi-Threaded[/b] option is experimental, and has several known bugs which can lead to crashing, especially when using particles or resizing the window. Not recommended for use in production at this stage. </member> <member name="rendering/environment/defaults/default_clear_color" type="Color" setter="" getter="" default="Color(0.3, 0.3, 0.3, 1)"> Default background clear color. Overridable per [Viewport] using its [Environment]. See [member Environment.background_mode] and [member Environment.background_color] in particular. To change this default color programmatically, use [method RenderingServer.set_default_clear_color]. diff --git a/main/main.cpp b/main/main.cpp index b759944ff0..f7de02fb73 100644 --- a/main/main.cpp +++ b/main/main.cpp @@ -1150,6 +1150,9 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph rtm = OS::RENDER_THREAD_UNSAFE; } else if (I->next()->get() == "separate") { rtm = OS::RENDER_SEPARATE_THREAD; + } else { + OS::get_singleton()->print("Unknown render thread mode, aborting.\nValid options are 'unsafe', 'safe' and 'separate'.\n"); + goto error; } N = I->next()->next(); @@ -1875,7 +1878,8 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph } if (rtm >= 0 && rtm < 3) { - if (editor) { + if (editor || project_manager) { + // Editor and project manager cannot run with rendering in a separate thread (they will crash on startup). rtm = OS::RENDER_THREAD_SAFE; } OS::get_singleton()->_render_thread_mode = OS::RenderThreadMode(rtm); @@ -2209,6 +2213,10 @@ Error Main::setup2() { } } + if (OS::get_singleton()->_render_thread_mode == OS::RENDER_SEPARATE_THREAD) { + WARN_PRINT("The Multi-Threaded rendering thread model is experimental, and has known issues which can lead to project crashes. Use the Single-Safe option in the project settings instead."); + } + /* Initialize Pen Tablet Driver */ { |
