mirror of
https://github.com/godotengine/godot.git
synced 2025-04-25 01:48:08 +08:00
Always allow selecting any rendering driver in the settings, add "auto" option.
This commit is contained in:
parent
e567f49cbb
commit
dea20c4a9b
@ -2683,26 +2683,38 @@
|
||||
<member name="rendering/environment/volumetric_fog/volume_size" type="int" setter="" getter="" default="64">
|
||||
Base size used to determine size of froxel buffer in the camera X-axis and Y-axis. The final size is scaled by the aspect ratio of the screen, so actual values may differ from what is set. Set a larger size for more detailed fog, set a smaller size for better performance.
|
||||
</member>
|
||||
<member name="rendering/gl_compatibility/driver" type="String" setter="" getter="">
|
||||
<member name="rendering/gl_compatibility/driver" type="String" setter="" getter="" default=""auto"">
|
||||
Sets the driver to be used by the renderer when using the Compatibility renderer. This property can not be edited directly, instead, set the driver using the platform-specific overrides.
|
||||
Supported values are:
|
||||
- [code]auto[/code], currently defaults to [code]opengl3[/code] on all platforms.
|
||||
- [code]opengl3[/code], OpenGL 3.3 on desktop platforms, OpenGL ES 3.0 on mobile platforms, WebGL 2.0 on web.
|
||||
- [code]opengl3_angle[/code], OpenGL ES 3.0 over ANGLE compatibility layer, supported on macOS (over native OpenGL) and Windows (over Direct3D 11).
|
||||
- [code]opengl3_es[/code], OpenGL ES 3.0 on Linux/BSD.
|
||||
[b]Note:[/b] The availability of these options depends on whether the engine was compiled with support for them (determined by SCons options [code]opengl3[/code] and [code]angle_libs[/code]).
|
||||
</member>
|
||||
<member name="rendering/gl_compatibility/driver.android" type="String" setter="" getter="">
|
||||
<member name="rendering/gl_compatibility/driver.android" type="String" setter="" getter="" default=""auto"">
|
||||
Android override for [member rendering/gl_compatibility/driver].
|
||||
The [code]auto[/code] setting is equivalent to [code]opengl3[/code] on this platform.
|
||||
</member>
|
||||
<member name="rendering/gl_compatibility/driver.ios" type="String" setter="" getter="">
|
||||
<member name="rendering/gl_compatibility/driver.ios" type="String" setter="" getter="" default=""auto"">
|
||||
iOS override for [member rendering/gl_compatibility/driver].
|
||||
The [code]auto[/code] setting is equivalent to [code]opengl3[/code] on this platform.
|
||||
</member>
|
||||
<member name="rendering/gl_compatibility/driver.linuxbsd" type="String" setter="" getter="">
|
||||
<member name="rendering/gl_compatibility/driver.linuxbsd" type="String" setter="" getter="" default=""auto"">
|
||||
LinuxBSD override for [member rendering/gl_compatibility/driver].
|
||||
The [code]auto[/code] setting is equivalent to [code]opengl3[/code] on this platform. [code]opengl3_es[/code] is available as an option, which is also used as a fallback on devices that don't support OpenGL 3.3.
|
||||
</member>
|
||||
<member name="rendering/gl_compatibility/driver.macos" type="String" setter="" getter="">
|
||||
<member name="rendering/gl_compatibility/driver.macos" type="String" setter="" getter="" default=""auto"">
|
||||
macOS override for [member rendering/gl_compatibility/driver].
|
||||
The [code]auto[/code] setting is equivalent to [code]opengl3[/code] on this platform. [code]opengl3_angle[/code] is available as an option if ANGLE support was compiled in.
|
||||
</member>
|
||||
<member name="rendering/gl_compatibility/driver.web" type="String" setter="" getter="">
|
||||
<member name="rendering/gl_compatibility/driver.web" type="String" setter="" getter="" default=""auto"">
|
||||
Web override for [member rendering/gl_compatibility/driver].
|
||||
The [code]auto[/code] setting is equivalent to [code]opengl3[/code] on this platform.
|
||||
</member>
|
||||
<member name="rendering/gl_compatibility/driver.windows" type="String" setter="" getter="">
|
||||
<member name="rendering/gl_compatibility/driver.windows" type="String" setter="" getter="" default=""auto"">
|
||||
Windows override for [member rendering/gl_compatibility/driver].
|
||||
The [code]auto[/code] setting is equivalent to [code]opengl3[/code] on this platform. [code]opengl3_angle[/code] is available as an option if ANGLE supported was compiled in. In such case, ANGLE is used preferentially on lower end devices with known problematic native OpenGL drivers (see [member rendering/gl_compatibility/force_angle_on_devices]).
|
||||
</member>
|
||||
<member name="rendering/gl_compatibility/fallback_to_angle" type="bool" setter="" getter="" default="true">
|
||||
If [code]true[/code], the compatibility renderer will fall back to ANGLE if native OpenGL is not supported or the device is listed in [member rendering/gl_compatibility/force_angle_on_devices].
|
||||
@ -2968,24 +2980,40 @@
|
||||
The number of entries in the sampler descriptors heap the Direct3D 12 rendering driver uses each frame, used for most rendering operations.
|
||||
Depending on the complexity of scenes, this value may be lowered or may need to be raised.
|
||||
</member>
|
||||
<member name="rendering/rendering_device/driver" type="String" setter="" getter="">
|
||||
<member name="rendering/rendering_device/driver" type="String" setter="" getter="" default=""auto"">
|
||||
Sets the driver to be used by the renderer when using a RenderingDevice-based renderer like the Forward+ or Mobile renderers. This property can't be edited directly. Instead, set the driver using the platform-specific overrides. This can be overridden using the [code]--rendering-driver <driver>[/code] command line argument.
|
||||
Supported values are:
|
||||
- [code]auto[/code], Metal on Apple Silicon Macs and iOS, Vulkan on other built-in platforms. On Windows, Direct3D 12 is the default if the engine was compiled without Vulkan support.
|
||||
- [code]metal[/code], Metal (supported on Apple Silicon Macs and iOS).
|
||||
- [code]vulkan[/code], Vulkan (supported on all desktop and mobile platforms).
|
||||
- [code]d3d12[/code], Direct3D 12 (supported on Windows).
|
||||
[b]Note:[/b] The availability of these options depends on whether the engine was compiled with support for them (determined by SCons options [code]vulkan[/code], [code]metal[/code], and [code]d3d12[/code]).
|
||||
[b]Note:[/b] The actual rendering driver may be automatically changed by the engine as a result of a fallback, or a user-specified command line argument. To get the actual rendering driver that is used at runtime, use [method RenderingServer.get_current_rendering_driver_name] instead of reading this project setting's value.
|
||||
</member>
|
||||
<member name="rendering/rendering_device/driver.android" type="String" setter="" getter="">
|
||||
<member name="rendering/rendering_device/driver.android" type="String" setter="" getter="" default=""auto"">
|
||||
Android override for [member rendering/rendering_device/driver].
|
||||
The [code]auto[/code] setting is equivalent to [code]vulkan[/code] on this platform.
|
||||
[b]Note:[/b] If Vulkan was disabled at compile time, there is no alternative RenderingDevice driver.
|
||||
</member>
|
||||
<member name="rendering/rendering_device/driver.ios" type="String" setter="" getter="">
|
||||
<member name="rendering/rendering_device/driver.ios" type="String" setter="" getter="" default=""auto"">
|
||||
iOS override for [member rendering/rendering_device/driver].
|
||||
The [code]auto[/code] setting is equivalent to [code]metal[/code] on this platform.
|
||||
[b]Note:[/b] If Metal was disabled at compile time, the default becomes [code]vulkan[/code]. If both Metal and Vulkan were disabled at compile time, there is no alternative RenderingDevice driver.
|
||||
</member>
|
||||
<member name="rendering/rendering_device/driver.linuxbsd" type="String" setter="" getter="">
|
||||
<member name="rendering/rendering_device/driver.linuxbsd" type="String" setter="" getter="" default=""auto"">
|
||||
LinuxBSD override for [member rendering/rendering_device/driver].
|
||||
The [code]auto[/code] setting is equivalent to [code]vulkan[/code] on this platform.
|
||||
[b]Note:[/b] If Vulkan was disabled at compile time, there is no alternative RenderingDevice driver.
|
||||
</member>
|
||||
<member name="rendering/rendering_device/driver.macos" type="String" setter="" getter="">
|
||||
<member name="rendering/rendering_device/driver.macos" type="String" setter="" getter="" default=""auto"">
|
||||
macOS override for [member rendering/rendering_device/driver].
|
||||
The [code]auto[/code] setting is equivalent to [code]metal[/code] on Apple Silicon Macs, and [code]vulkan[/code] (MoltenVK) on Intel Macs. Metal isn't supported on Intel Macs, so even if setting [code]metal[/code] explicitly, it will fallback to Vulkan on Intel Macs.
|
||||
[b]Note:[/b] If Metal was disabled at compile time, the default becomes [code]vulkan[/code] for both Apple Silicon and Intel Macs. If both Metal and Vulkan were disabled at compile time, there is no alternative RenderingDevice driver.
|
||||
</member>
|
||||
<member name="rendering/rendering_device/driver.windows" type="String" setter="" getter="">
|
||||
<member name="rendering/rendering_device/driver.windows" type="String" setter="" getter="" default=""auto"">
|
||||
Windows override for [member rendering/rendering_device/driver].
|
||||
The [code]auto[/code] setting is equivalent to [code]vulkan[/code] on this platform.
|
||||
[b]Note:[/b] If Vulkan was disabled at compile time, the default becomes [code]d3d12[/code]. If both Vulkan and Direct3D 12 were disabled at compile time, there is no alternative RenderingDevice driver.
|
||||
</member>
|
||||
<member name="rendering/rendering_device/fallback_to_d3d12" type="bool" setter="" getter="" default="true">
|
||||
If [code]true[/code], the forward renderer will fall back to Direct3D 12 if Vulkan is not supported.
|
||||
|
@ -2031,40 +2031,13 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
|
||||
Logger::set_flush_stdout_on_print(GLOBAL_GET("application/run/flush_stdout_on_print"));
|
||||
|
||||
{
|
||||
String driver_hints = "";
|
||||
String driver_hints_with_d3d12 = "";
|
||||
String driver_hints_with_metal = "";
|
||||
|
||||
{
|
||||
Vector<String> driver_hints_arr;
|
||||
#ifdef VULKAN_ENABLED
|
||||
driver_hints_arr.push_back("vulkan");
|
||||
#endif
|
||||
driver_hints = String(",").join(driver_hints_arr);
|
||||
|
||||
#ifdef D3D12_ENABLED
|
||||
driver_hints_arr.push_back("d3d12");
|
||||
#endif
|
||||
driver_hints_with_d3d12 = String(",").join(driver_hints_arr);
|
||||
|
||||
#ifdef METAL_ENABLED
|
||||
// Make metal the preferred and default driver.
|
||||
driver_hints_arr.insert(0, "metal");
|
||||
#endif
|
||||
driver_hints_with_metal = String(",").join(driver_hints_arr);
|
||||
}
|
||||
|
||||
String default_driver = driver_hints.get_slice(",", 0);
|
||||
String default_driver_with_d3d12 = driver_hints_with_d3d12.get_slice(",", 0);
|
||||
String default_driver_with_metal = driver_hints_with_metal.get_slice(",", 0);
|
||||
|
||||
// For now everything defaults to vulkan when available. This can change in future updates.
|
||||
GLOBAL_DEF_RST_NOVAL("rendering/rendering_device/driver", default_driver);
|
||||
GLOBAL_DEF_RST_NOVAL(PropertyInfo(Variant::STRING, "rendering/rendering_device/driver.windows", PROPERTY_HINT_ENUM, driver_hints_with_d3d12), default_driver_with_d3d12);
|
||||
GLOBAL_DEF_RST_NOVAL(PropertyInfo(Variant::STRING, "rendering/rendering_device/driver.linuxbsd", PROPERTY_HINT_ENUM, driver_hints), default_driver);
|
||||
GLOBAL_DEF_RST_NOVAL(PropertyInfo(Variant::STRING, "rendering/rendering_device/driver.android", PROPERTY_HINT_ENUM, driver_hints), default_driver);
|
||||
GLOBAL_DEF_RST_NOVAL(PropertyInfo(Variant::STRING, "rendering/rendering_device/driver.ios", PROPERTY_HINT_ENUM, driver_hints_with_metal), default_driver_with_metal);
|
||||
GLOBAL_DEF_RST_NOVAL(PropertyInfo(Variant::STRING, "rendering/rendering_device/driver.macos", PROPERTY_HINT_ENUM, driver_hints_with_metal), default_driver_with_metal);
|
||||
GLOBAL_DEF_RST("rendering/rendering_device/driver", "auto");
|
||||
GLOBAL_DEF_RST(PropertyInfo(Variant::STRING, "rendering/rendering_device/driver.windows", PROPERTY_HINT_ENUM, "auto,vulkan,d3d12"), "auto");
|
||||
GLOBAL_DEF_RST(PropertyInfo(Variant::STRING, "rendering/rendering_device/driver.linuxbsd", PROPERTY_HINT_ENUM, "auto,vulkan"), "auto");
|
||||
GLOBAL_DEF_RST(PropertyInfo(Variant::STRING, "rendering/rendering_device/driver.android", PROPERTY_HINT_ENUM, "auto,vulkan"), "auto");
|
||||
GLOBAL_DEF_RST(PropertyInfo(Variant::STRING, "rendering/rendering_device/driver.ios", PROPERTY_HINT_ENUM, "auto,metal,vulkan"), "auto");
|
||||
GLOBAL_DEF_RST(PropertyInfo(Variant::STRING, "rendering/rendering_device/driver.macos", PROPERTY_HINT_ENUM, "auto,metal,vulkan"), "auto");
|
||||
|
||||
GLOBAL_DEF_RST("rendering/rendering_device/fallback_to_vulkan", true);
|
||||
GLOBAL_DEF_RST("rendering/rendering_device/fallback_to_d3d12", true);
|
||||
@ -2072,24 +2045,13 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
|
||||
}
|
||||
|
||||
{
|
||||
String driver_hints = "";
|
||||
String driver_hints_angle = "";
|
||||
String driver_hints_egl = "";
|
||||
#ifdef GLES3_ENABLED
|
||||
driver_hints = "opengl3";
|
||||
driver_hints_angle = "opengl3,opengl3_angle"; // macOS, Windows.
|
||||
driver_hints_egl = "opengl3,opengl3_es"; // Linux.
|
||||
#endif
|
||||
|
||||
String default_driver = driver_hints.get_slice(",", 0);
|
||||
|
||||
GLOBAL_DEF_RST_NOVAL("rendering/gl_compatibility/driver", default_driver);
|
||||
GLOBAL_DEF_RST_NOVAL(PropertyInfo(Variant::STRING, "rendering/gl_compatibility/driver.windows", PROPERTY_HINT_ENUM, driver_hints_angle), default_driver);
|
||||
GLOBAL_DEF_RST_NOVAL(PropertyInfo(Variant::STRING, "rendering/gl_compatibility/driver.linuxbsd", PROPERTY_HINT_ENUM, driver_hints_egl), default_driver);
|
||||
GLOBAL_DEF_RST_NOVAL(PropertyInfo(Variant::STRING, "rendering/gl_compatibility/driver.web", PROPERTY_HINT_ENUM, driver_hints), default_driver);
|
||||
GLOBAL_DEF_RST_NOVAL(PropertyInfo(Variant::STRING, "rendering/gl_compatibility/driver.android", PROPERTY_HINT_ENUM, driver_hints), default_driver);
|
||||
GLOBAL_DEF_RST_NOVAL(PropertyInfo(Variant::STRING, "rendering/gl_compatibility/driver.ios", PROPERTY_HINT_ENUM, driver_hints), default_driver);
|
||||
GLOBAL_DEF_RST_NOVAL(PropertyInfo(Variant::STRING, "rendering/gl_compatibility/driver.macos", PROPERTY_HINT_ENUM, driver_hints_angle), default_driver);
|
||||
GLOBAL_DEF_RST("rendering/gl_compatibility/driver", "auto");
|
||||
GLOBAL_DEF_RST(PropertyInfo(Variant::STRING, "rendering/gl_compatibility/driver.windows", PROPERTY_HINT_ENUM, "auto,opengl3,opengl3_angle"), "auto");
|
||||
GLOBAL_DEF_RST(PropertyInfo(Variant::STRING, "rendering/gl_compatibility/driver.linuxbsd", PROPERTY_HINT_ENUM, "auto,opengl3,opengl3_es"), "auto");
|
||||
GLOBAL_DEF_RST(PropertyInfo(Variant::STRING, "rendering/gl_compatibility/driver.web", PROPERTY_HINT_ENUM, "auto,opengl3"), "auto");
|
||||
GLOBAL_DEF_RST(PropertyInfo(Variant::STRING, "rendering/gl_compatibility/driver.android", PROPERTY_HINT_ENUM, "auto,opengl3"), "auto");
|
||||
GLOBAL_DEF_RST(PropertyInfo(Variant::STRING, "rendering/gl_compatibility/driver.ios", PROPERTY_HINT_ENUM, "auto,opengl3"), "auto");
|
||||
GLOBAL_DEF_RST(PropertyInfo(Variant::STRING, "rendering/gl_compatibility/driver.macos", PROPERTY_HINT_ENUM, "auto,opengl3,opengl3_angle"), "auto");
|
||||
|
||||
GLOBAL_DEF_RST("rendering/gl_compatibility/nvidia_disable_threaded_optimization", true);
|
||||
GLOBAL_DEF_RST("rendering/gl_compatibility/fallback_to_angle", true);
|
||||
@ -2423,6 +2385,30 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
|
||||
// always convert to lower case for consistency in the code
|
||||
rendering_driver = rendering_driver.to_lower();
|
||||
|
||||
if (rendering_method == "gl_compatibility") {
|
||||
#ifdef GLES3_ENABLED
|
||||
if (rendering_driver == "auto") {
|
||||
rendering_driver = "opengl3";
|
||||
}
|
||||
#endif
|
||||
} else {
|
||||
#ifdef METAL_ENABLED
|
||||
if (rendering_driver == "auto") {
|
||||
rendering_driver = "metal";
|
||||
}
|
||||
#endif
|
||||
#ifdef VULKAN_ENABLED
|
||||
if (rendering_driver == "auto") {
|
||||
rendering_driver = "vulkan";
|
||||
}
|
||||
#endif
|
||||
#ifdef D3D12_ENABLED
|
||||
if (rendering_driver == "auto") {
|
||||
rendering_driver = "d3d12";
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
OS::get_singleton()->set_current_rendering_driver_name(rendering_driver);
|
||||
OS::get_singleton()->set_current_rendering_method(rendering_method);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user