Allow to compile the engine without XR support

This commit is contained in:
Michael Alexsander 2025-02-24 20:37:51 -03:00
parent cc7a951140
commit aea559b39a
No known key found for this signature in database
GPG Key ID: A9C91EE110F4EABA
33 changed files with 77 additions and 57 deletions

View File

@ -186,7 +186,6 @@ opts.Add(BoolVariable("vulkan", "Enable the vulkan rendering driver", True))
opts.Add(BoolVariable("opengl3", "Enable the OpenGL/GLES3 rendering driver", True)) opts.Add(BoolVariable("opengl3", "Enable the OpenGL/GLES3 rendering driver", True))
opts.Add(BoolVariable("d3d12", "Enable the Direct3D 12 rendering driver on supported platforms", False)) opts.Add(BoolVariable("d3d12", "Enable the Direct3D 12 rendering driver on supported platforms", False))
opts.Add(BoolVariable("metal", "Enable the Metal rendering driver on supported platforms (Apple arm64 only)", False)) opts.Add(BoolVariable("metal", "Enable the Metal rendering driver on supported platforms (Apple arm64 only)", False))
opts.Add(BoolVariable("openxr", "Enable the OpenXR driver", True))
opts.Add(BoolVariable("use_volk", "Use the volk library to load the Vulkan loader dynamically", True)) opts.Add(BoolVariable("use_volk", "Use the volk library to load the Vulkan loader dynamically", True))
opts.Add(BoolVariable("disable_exceptions", "Force disabling exception handling code", True)) opts.Add(BoolVariable("disable_exceptions", "Force disabling exception handling code", True))
opts.Add("custom_modules", "A list of comma-separated directory paths containing custom modules to build.", "") opts.Add("custom_modules", "A list of comma-separated directory paths containing custom modules to build.", "")
@ -220,6 +219,7 @@ opts.Add("vsproj_name", "Name of the Visual Studio solution", "godot")
opts.Add("import_env_vars", "A comma-separated list of environment variables to copy from the outer environment.", "") opts.Add("import_env_vars", "A comma-separated list of environment variables to copy from the outer environment.", "")
opts.Add(BoolVariable("disable_3d", "Disable 3D nodes for a smaller executable", False)) opts.Add(BoolVariable("disable_3d", "Disable 3D nodes for a smaller executable", False))
opts.Add(BoolVariable("disable_advanced_gui", "Disable advanced GUI nodes and behaviors", False)) opts.Add(BoolVariable("disable_advanced_gui", "Disable advanced GUI nodes and behaviors", False))
opts.Add(BoolVariable("disable_xr", "Disable XR nodes and server", False))
opts.Add("build_profile", "Path to a file containing a feature build profile", "") opts.Add("build_profile", "Path to a file containing a feature build profile", "")
opts.Add(BoolVariable("modules_enabled_by_default", "If no, disable all modules except ones explicitly enabled", True)) opts.Add(BoolVariable("modules_enabled_by_default", "If no, disable all modules except ones explicitly enabled", True))
opts.Add(BoolVariable("no_editor_splash", "Don't use the custom splash screen for the editor", True)) opts.Add(BoolVariable("no_editor_splash", "Don't use the custom splash screen for the editor", True))
@ -995,6 +995,7 @@ if env["disable_3d"]:
Exit(255) Exit(255)
else: else:
env.Append(CPPDEFINES=["_3D_DISABLED"]) env.Append(CPPDEFINES=["_3D_DISABLED"])
env["disable_xr"] = True
if env["disable_advanced_gui"]: if env["disable_advanced_gui"]:
if env.editor_build: if env.editor_build:
print_error( print_error(
@ -1003,6 +1004,8 @@ if env["disable_advanced_gui"]:
Exit(255) Exit(255)
else: else:
env.Append(CPPDEFINES=["ADVANCED_GUI_DISABLED"]) env.Append(CPPDEFINES=["ADVANCED_GUI_DISABLED"])
if env["disable_xr"]:
env.Append(CPPDEFINES=["XR_DISABLED"])
if env["minizip"]: if env["minizip"]:
env.Append(CPPDEFINES=["MINIZIP_ENABLED"]) env.Append(CPPDEFINES=["MINIZIP_ENABLED"])
if env["brotli"]: if env["brotli"]:

View File

@ -46,7 +46,7 @@ const char *EditorBuildProfile::build_option_identifiers[BUILD_OPTION_MAX] = {
"disable_2d_physics", "disable_2d_physics",
"disable_3d_physics", "disable_3d_physics",
"disable_navigation", "disable_navigation",
"openxr", "disable_xr",
"rendering_device", // FIXME: there's no scons option to disable rendering device "rendering_device", // FIXME: there's no scons option to disable rendering device
"opengl3", "opengl3",
"vulkan", "vulkan",
@ -82,7 +82,7 @@ const bool EditorBuildProfile::build_option_disable_values[BUILD_OPTION_MAX] = {
true, // PHYSICS_2D true, // PHYSICS_2D
true, // PHYSICS_3D true, // PHYSICS_3D
true, // NAVIGATION true, // NAVIGATION
false, // XR true, // XR
false, // RENDERING_DEVICE false, // RENDERING_DEVICE
false, // OPENGL false, // OPENGL
false, // VULKAN false, // VULKAN

View File

@ -587,7 +587,7 @@ EditorRunBar::EditorRunBar() {
run_native->connect("native_run", callable_mp(this, &EditorRunBar::_run_native)); run_native->connect("native_run", callable_mp(this, &EditorRunBar::_run_native));
bool add_play_xr_mode_options = false; bool add_play_xr_mode_options = false;
#ifndef _3D_DISABLED #ifndef XR_DISABLED
if (OS::get_singleton()->has_feature("xr_editor") && if (OS::get_singleton()->has_feature("xr_editor") &&
(XRServer::get_xr_mode() == XRServer::XRMODE_ON || (XRServer::get_xr_mode() == XRServer::XRMODE_ON ||
(XRServer::get_xr_mode() == XRServer::XRMODE_DEFAULT && GLOBAL_GET("xr/openxr/enabled")))) { (XRServer::get_xr_mode() == XRServer::XRMODE_DEFAULT && GLOBAL_GET("xr/openxr/enabled")))) {
@ -596,7 +596,7 @@ EditorRunBar::EditorRunBar() {
// either regular mode or XR mode. // either regular mode or XR mode.
add_play_xr_mode_options = true; add_play_xr_mode_options = true;
} }
#endif // _3D_DISABLED #endif // XR_DISABLED
if (add_play_xr_mode_options) { if (add_play_xr_mode_options) {
MenuButton *menu_button = memnew(MenuButton); MenuButton *menu_button = memnew(MenuButton);

View File

@ -713,9 +713,9 @@ Error Main::test_setup() {
/** INITIALIZE SERVERS **/ /** INITIALIZE SERVERS **/
register_server_types(); register_server_types();
#ifndef _3D_DISABLED #ifndef XR_DISABLED
XRServer::set_xr_mode(XRServer::XRMODE_OFF); // Skip in tests. XRServer::set_xr_mode(XRServer::XRMODE_OFF); // Skip in tests.
#endif // _3D_DISABLED #endif // XR_DISABLED
initialize_modules(MODULE_INITIALIZATION_LEVEL_SERVERS); initialize_modules(MODULE_INITIALIZATION_LEVEL_SERVERS);
GDExtensionManager::get_singleton()->initialize_extensions(GDExtension::INITIALIZATION_LEVEL_SERVERS); GDExtensionManager::get_singleton()->initialize_extensions(GDExtension::INITIALIZATION_LEVEL_SERVERS);
@ -1734,7 +1734,7 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
OS::get_singleton()->disable_crash_handler(); OS::get_singleton()->disable_crash_handler();
} else if (arg == "--skip-breakpoints") { } else if (arg == "--skip-breakpoints") {
skip_breakpoints = true; skip_breakpoints = true;
#ifndef _3D_DISABLED #ifndef XR_DISABLED
} else if (arg == "--xr-mode") { } else if (arg == "--xr-mode") {
if (N) { if (N) {
String xr_mode = N->get().to_lower(); String xr_mode = N->get().to_lower();
@ -1753,7 +1753,7 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
OS::get_singleton()->print("Missing --xr-mode argument, aborting.\n"); OS::get_singleton()->print("Missing --xr-mode argument, aborting.\n");
goto error; goto error;
} }
#endif // _3D_DISABLED #endif // XR_DISABLED
} else if (arg == "--benchmark") { } else if (arg == "--benchmark") {
OS::get_singleton()->set_use_benchmark(true); OS::get_singleton()->set_use_benchmark(true);
} else if (arg == "--benchmark-file") { } else if (arg == "--benchmark-file") {
@ -3196,7 +3196,7 @@ Error Main::setup2(bool p_show_boot_logo) {
OS::get_singleton()->benchmark_end_measure("Servers", "Audio"); OS::get_singleton()->benchmark_end_measure("Servers", "Audio");
} }
#ifndef _3D_DISABLED #ifndef XR_DISABLED
/* Initialize XR Server */ /* Initialize XR Server */
{ {
@ -3206,7 +3206,7 @@ Error Main::setup2(bool p_show_boot_logo) {
OS::get_singleton()->benchmark_end_measure("Servers", "XR"); OS::get_singleton()->benchmark_end_measure("Servers", "XR");
} }
#endif // _3D_DISABLED #endif // XR_DISABLED
OS::get_singleton()->benchmark_end_measure("Startup", "Servers"); OS::get_singleton()->benchmark_end_measure("Startup", "Servers");
@ -4427,9 +4427,9 @@ bool Main::iteration() {
bool exit = false; bool exit = false;
// process all our active interfaces // process all our active interfaces
#ifndef _3D_DISABLED #ifndef XR_DISABLED
XRServer::get_singleton()->_process(); XRServer::get_singleton()->_process();
#endif // _3D_DISABLED #endif // XR_DISABLED
NavigationServer2D::get_singleton()->sync(); NavigationServer2D::get_singleton()->sync();
NavigationServer3D::get_singleton()->sync(); NavigationServer3D::get_singleton()->sync();
@ -4683,13 +4683,13 @@ void Main::cleanup(bool p_force) {
//clear global shader variables before scene and other graphics stuff are deinitialized. //clear global shader variables before scene and other graphics stuff are deinitialized.
rendering_server->global_shader_parameters_clear(); rendering_server->global_shader_parameters_clear();
#ifndef _3D_DISABLED #ifndef XR_DISABLED
if (xr_server) { if (xr_server) {
// Now that we're unregistering properly in plugins we need to keep access to xr_server for a little longer // Now that we're unregistering properly in plugins we need to keep access to xr_server for a little longer
// We do however unset our primary interface // We do however unset our primary interface
xr_server->set_primary_interface(Ref<XRInterface>()); xr_server->set_primary_interface(Ref<XRInterface>());
} }
#endif // _3D_DISABLED #endif // XR_DISABLED
#ifdef TOOLS_ENABLED #ifdef TOOLS_ENABLED
GDExtensionManager::get_singleton()->deinitialize_extensions(GDExtension::INITIALIZATION_LEVEL_EDITOR); GDExtensionManager::get_singleton()->deinitialize_extensions(GDExtension::INITIALIZATION_LEVEL_EDITOR);

View File

@ -1,5 +1,5 @@
def can_build(env, platform): def can_build(env, platform):
return not env["disable_3d"] return not env["disable_xr"]
def configure(env): def configure(env):

View File

@ -1,8 +1,8 @@
def can_build(env, platform): def can_build(env, platform):
if platform in ("linuxbsd", "windows", "android", "macos"): if platform in ("linuxbsd", "windows", "android", "macos"):
return env["openxr"] and not env["disable_3d"] return not env["disable_xr"]
else: else:
# not supported on these platforms # Not supported on these platforms.
return False return False

View File

@ -35,7 +35,7 @@
#include "../openxr_interface.h" #include "../openxr_interface.h"
#include "scene/3d/mesh_instance_3d.h" #include "scene/3d/mesh_instance_3d.h"
#include "scene/3d/xr_nodes.h" #include "scene/3d/xr/xr_nodes.h"
#include "scene/main/viewport.h" #include "scene/main/viewport.h"
#include "platform/android/api/java_class_wrapper.h" #include "platform/android/api/java_class_wrapper.h"

View File

@ -32,7 +32,7 @@
#include "../extensions/openxr_visibility_mask_extension.h" #include "../extensions/openxr_visibility_mask_extension.h"
#include "../openxr_interface.h" #include "../openxr_interface.h"
#include "scene/3d/xr_nodes.h" #include "scene/3d/xr/xr_nodes.h"
void OpenXRVisibilityMask::_bind_methods() { void OpenXRVisibilityMask::_bind_methods() {
} }

View File

@ -1,5 +1,5 @@
def can_build(env, platform): def can_build(env, platform):
return env["opengl3"] and not env["disable_3d"] return env["opengl3"] and not env["disable_xr"]
def configure(env): def configure(env):

View File

@ -272,7 +272,7 @@ JNIEXPORT jboolean JNICALL Java_org_godotengine_godot_GodotLib_step(JNIEnv *env,
if (step.get() == STEP_SHOW_LOGO) { if (step.get() == STEP_SHOW_LOGO) {
bool xr_enabled = false; bool xr_enabled = false;
#ifndef _3D_DISABLED #ifndef XR_DISABLED
// Unlike PCVR, there's no additional 2D screen onto which to render the boot logo, // Unlike PCVR, there's no additional 2D screen onto which to render the boot logo,
// so we skip this step if xr is enabled. // so we skip this step if xr is enabled.
if (XRServer::get_xr_mode() == XRServer::XRMODE_DEFAULT) { if (XRServer::get_xr_mode() == XRServer::XRMODE_DEFAULT) {
@ -280,7 +280,7 @@ JNIEXPORT jboolean JNICALL Java_org_godotengine_godot_GodotLib_step(JNIEnv *env,
} else { } else {
xr_enabled = XRServer::get_xr_mode() == XRServer::XRMODE_ON; xr_enabled = XRServer::get_xr_mode() == XRServer::XRMODE_ON;
} }
#endif // _3D_DISABLED #endif // XR_DISABLED
if (!xr_enabled) { if (!xr_enabled) {
Main::setup_boot_logo(); Main::setup_boot_logo();
} }

View File

@ -7,3 +7,5 @@ env.add_source_files(env.scene_sources, "*.cpp")
# Chain load SCsubs # Chain load SCsubs
SConscript("physics/SCsub") SConscript("physics/SCsub")
if not env["disable_xr"]:
SConscript("xr/SCsub")

6
scene/3d/xr/SCsub Normal file
View File

@ -0,0 +1,6 @@
#!/usr/bin/env python
from misc.utility.scons_hints import *
Import("env")
env.add_source_files(env.scene_sources, "*.cpp")

View File

@ -31,7 +31,7 @@
#ifndef XR_FACE_MODIFIER_3D_H #ifndef XR_FACE_MODIFIER_3D_H
#define XR_FACE_MODIFIER_3D_H #define XR_FACE_MODIFIER_3D_H
#include "mesh_instance_3d.h" #include "scene/3d/mesh_instance_3d.h"
#include "scene/3d/node_3d.h" #include "scene/3d/node_3d.h"
/** /**

View File

@ -701,7 +701,7 @@ void Viewport::_process_picking() {
physics_picking_events.clear(); physics_picking_events.clear();
return; return;
} }
#ifndef _3D_DISABLED #ifndef XR_DISABLED
if (use_xr) { if (use_xr) {
if (XRServer::get_singleton() != nullptr) { if (XRServer::get_singleton() != nullptr) {
Ref<XRInterface> xr_interface = XRServer::get_singleton()->get_primary_interface(); Ref<XRInterface> xr_interface = XRServer::get_singleton()->get_primary_interface();
@ -712,7 +712,7 @@ void Viewport::_process_picking() {
} }
} }
} }
#endif #endif // XR_DISABLED
_drop_physics_mouseover(true); _drop_physics_mouseover(true);
@ -1058,7 +1058,7 @@ bool Viewport::_set_size(const Size2i &p_size, const Size2i &p_size_2d_override,
} }
Size2i Viewport::_get_size() const { Size2i Viewport::_get_size() const {
#ifndef _3D_DISABLED #ifndef XR_DISABLED
if (use_xr) { if (use_xr) {
if (XRServer::get_singleton() != nullptr) { if (XRServer::get_singleton() != nullptr) {
Ref<XRInterface> xr_interface = XRServer::get_singleton()->get_primary_interface(); Ref<XRInterface> xr_interface = XRServer::get_singleton()->get_primary_interface();
@ -1069,7 +1069,7 @@ Size2i Viewport::_get_size() const {
} }
return Size2i(); return Size2i();
} }
#endif // _3D_DISABLED #endif // XR_DISABLED
return size; return size;
} }

View File

@ -293,10 +293,10 @@
#include "scene/3d/visible_on_screen_notifier_3d.h" #include "scene/3d/visible_on_screen_notifier_3d.h"
#include "scene/3d/voxel_gi.h" #include "scene/3d/voxel_gi.h"
#include "scene/3d/world_environment.h" #include "scene/3d/world_environment.h"
#include "scene/3d/xr_body_modifier_3d.h" #include "scene/3d/xr/xr_body_modifier_3d.h"
#include "scene/3d/xr_face_modifier_3d.h" #include "scene/3d/xr/xr_face_modifier_3d.h"
#include "scene/3d/xr_hand_modifier_3d.h" #include "scene/3d/xr/xr_hand_modifier_3d.h"
#include "scene/3d/xr_nodes.h" #include "scene/3d/xr/xr_nodes.h"
#include "scene/animation/root_motion_view.h" #include "scene/animation/root_motion_view.h"
#include "scene/resources/3d/box_shape_3d.h" #include "scene/resources/3d/box_shape_3d.h"
#include "scene/resources/3d/capsule_shape_3d.h" #include "scene/resources/3d/capsule_shape_3d.h"
@ -555,6 +555,7 @@ void register_scene_types() {
GDREGISTER_VIRTUAL_CLASS(GeometryInstance3D); GDREGISTER_VIRTUAL_CLASS(GeometryInstance3D);
GDREGISTER_CLASS(Camera3D); GDREGISTER_CLASS(Camera3D);
GDREGISTER_CLASS(AudioListener3D); GDREGISTER_CLASS(AudioListener3D);
#ifndef XR_DISABLED
GDREGISTER_CLASS(XRCamera3D); GDREGISTER_CLASS(XRCamera3D);
GDREGISTER_CLASS(XRNode3D); GDREGISTER_CLASS(XRNode3D);
GDREGISTER_CLASS(XRController3D); GDREGISTER_CLASS(XRController3D);
@ -563,6 +564,7 @@ void register_scene_types() {
GDREGISTER_CLASS(XRBodyModifier3D); GDREGISTER_CLASS(XRBodyModifier3D);
GDREGISTER_CLASS(XRHandModifier3D); GDREGISTER_CLASS(XRHandModifier3D);
GDREGISTER_CLASS(XRFaceModifier3D); GDREGISTER_CLASS(XRFaceModifier3D);
#endif // XR_DISABLED
GDREGISTER_CLASS(MeshInstance3D); GDREGISTER_CLASS(MeshInstance3D);
GDREGISTER_CLASS(OccluderInstance3D); GDREGISTER_CLASS(OccluderInstance3D);
GDREGISTER_ABSTRACT_CLASS(Occluder3D); GDREGISTER_ABSTRACT_CLASS(Occluder3D);

View File

@ -343,6 +343,7 @@ def generate_scu_files(max_includes_per_scu):
process_folder(["scene/3d"]) process_folder(["scene/3d"])
process_folder(["scene/3d/physics"]) process_folder(["scene/3d/physics"])
process_folder(["scene/3d/physics/joints"]) process_folder(["scene/3d/physics/joints"])
process_folder(["scene/3d/xr"])
process_folder(["scene/animation"]) process_folder(["scene/animation"])
process_folder(["scene/gui"]) process_folder(["scene/gui"])
process_folder(["scene/main"]) process_folder(["scene/main"])

View File

@ -29,8 +29,10 @@ SConscript("text/SCsub")
if not env["disable_3d"]: if not env["disable_3d"]:
env.add_source_files(env.servers_sources, "physics_server_3d.cpp") env.add_source_files(env.servers_sources, "physics_server_3d.cpp")
env.add_source_files(env.servers_sources, "physics_server_3d_wrap_mt.cpp") env.add_source_files(env.servers_sources, "physics_server_3d_wrap_mt.cpp")
SConscript("xr/SCsub")
env.add_source_files(env.servers_sources, "xr_server.cpp") if not env["disable_xr"]:
env.add_source_files(env.servers_sources, "xr_server.cpp")
SConscript("xr/SCsub")
lib = env.add_library("servers", env.servers_sources) lib = env.add_library("servers", env.servers_sources)

View File

@ -307,6 +307,7 @@ void register_server_types() {
PhysicsServer3DManager::get_singleton()->register_server("Dummy", callable_mp_static(_create_dummy_physics_server_3d)); PhysicsServer3DManager::get_singleton()->register_server("Dummy", callable_mp_static(_create_dummy_physics_server_3d));
#ifndef XR_DISABLED
GDREGISTER_ABSTRACT_CLASS(XRInterface); GDREGISTER_ABSTRACT_CLASS(XRInterface);
GDREGISTER_CLASS(XRVRS); GDREGISTER_CLASS(XRVRS);
GDREGISTER_CLASS(XRBodyTracker); GDREGISTER_CLASS(XRBodyTracker);
@ -318,6 +319,7 @@ void register_server_types() {
GDREGISTER_CLASS(XRPositionalTracker); GDREGISTER_CLASS(XRPositionalTracker);
GDREGISTER_CLASS(XRServer); GDREGISTER_CLASS(XRServer);
GDREGISTER_ABSTRACT_CLASS(XRTracker); GDREGISTER_ABSTRACT_CLASS(XRTracker);
#endif // XR_DISABLED
#endif // _3D_DISABLED #endif // _3D_DISABLED
GDREGISTER_ABSTRACT_CLASS(NavigationServer3D); GDREGISTER_ABSTRACT_CLASS(NavigationServer3D);
@ -358,7 +360,9 @@ void register_server_singletons() {
Engine::get_singleton()->add_singleton(Engine::Singleton("PhysicsServer2D", PhysicsServer2D::get_singleton(), "PhysicsServer2D")); Engine::get_singleton()->add_singleton(Engine::Singleton("PhysicsServer2D", PhysicsServer2D::get_singleton(), "PhysicsServer2D"));
#ifndef _3D_DISABLED #ifndef _3D_DISABLED
Engine::get_singleton()->add_singleton(Engine::Singleton("PhysicsServer3D", PhysicsServer3D::get_singleton(), "PhysicsServer3D")); Engine::get_singleton()->add_singleton(Engine::Singleton("PhysicsServer3D", PhysicsServer3D::get_singleton(), "PhysicsServer3D"));
#ifndef XR_DISABLED
Engine::get_singleton()->add_singleton(Engine::Singleton("XRServer", XRServer::get_singleton(), "XRServer")); Engine::get_singleton()->add_singleton(Engine::Singleton("XRServer", XRServer::get_singleton(), "XRServer"));
#endif // XR_DISABLED
#endif // _3D_DISABLED #endif // _3D_DISABLED
OS::get_singleton()->benchmark_end_measure("Servers", "Register Singletons"); OS::get_singleton()->benchmark_end_measure("Servers", "Register Singletons");

View File

@ -50,13 +50,13 @@ RendererCompositor::RendererCompositor() {
ERR_FAIL_COND_MSG(singleton != nullptr, "A RendererCompositor singleton already exists."); ERR_FAIL_COND_MSG(singleton != nullptr, "A RendererCompositor singleton already exists.");
singleton = this; singleton = this;
#ifndef _3D_DISABLED #ifndef XR_DISABLED
if (XRServer::get_xr_mode() == XRServer::XRMODE_DEFAULT) { if (XRServer::get_xr_mode() == XRServer::XRMODE_DEFAULT) {
xr_enabled = GLOBAL_GET("xr/shaders/enabled"); xr_enabled = GLOBAL_GET("xr/shaders/enabled");
} else { } else {
xr_enabled = XRServer::get_xr_mode() == XRServer::XRMODE_ON; xr_enabled = XRServer::get_xr_mode() == XRServer::XRMODE_ON;
} }
#endif // _3D_DISABLED #endif // XR_DISABLED
} }
RendererCompositor::~RendererCompositor() { RendererCompositor::~RendererCompositor() {

View File

@ -135,7 +135,7 @@ void VRS::update_vrs_texture(RID p_vrs_fb, RID p_render_target) {
copy_vrs(rd_texture, p_vrs_fb, layers > 1); copy_vrs(rd_texture, p_vrs_fb, layers > 1);
} }
} }
#ifndef _3D_DISABLED #ifndef XR_DISABLED
} else if (vrs_mode == RS::VIEWPORT_VRS_XR) { } else if (vrs_mode == RS::VIEWPORT_VRS_XR) {
Ref<XRInterface> interface = XRServer::get_singleton()->get_primary_interface(); Ref<XRInterface> interface = XRServer::get_singleton()->get_primary_interface();
if (interface.is_valid()) { if (interface.is_valid()) {
@ -150,7 +150,7 @@ void VRS::update_vrs_texture(RID p_vrs_fb, RID p_render_target) {
} }
} }
} }
#endif // _3D_DISABLED #endif // XR_DISABLED
} }
if (vrs_update_mode == RS::VIEWPORT_VRS_UPDATE_ONCE) { if (vrs_update_mode == RS::VIEWPORT_VRS_UPDATE_ONCE) {

View File

@ -2726,6 +2726,7 @@ void RendererSceneCull::render_camera(const Ref<RenderSceneBuffers> &p_render_bu
} }
camera_data.set_camera(transform, projection, is_orthogonal, is_frustum, vaspect, jitter, taa_frame_count, camera->visible_layers); camera_data.set_camera(transform, projection, is_orthogonal, is_frustum, vaspect, jitter, taa_frame_count, camera->visible_layers);
#ifndef XR_DISABLED
} else { } else {
XRServer *xr_server = XRServer::get_singleton(); XRServer *xr_server = XRServer::get_singleton();
@ -2763,6 +2764,7 @@ void RendererSceneCull::render_camera(const Ref<RenderSceneBuffers> &p_render_bu
} else { } else {
// this won't be called (see fail check above) but keeping this comment to indicate we may support more then 2 views in the future... // this won't be called (see fail check above) but keeping this comment to indicate we may support more then 2 views in the future...
} }
#endif // XR_DISABLED
} }
RID environment = _render_get_environment(p_camera, p_scenario); RID environment = _render_get_environment(p_camera, p_scenario);

View File

@ -47,10 +47,6 @@
#include "servers/rendering/rendering_server_globals.h" #include "servers/rendering/rendering_server_globals.h"
#include "servers/rendering/storage/utilities.h" #include "servers/rendering/storage/utilities.h"
#ifndef _3D_DISABLED
#include "servers/xr/xr_interface.h"
#endif // _3D_DISABLED
class RenderingLightCuller; class RenderingLightCuller;
class RendererSceneCull : public RenderingMethod { class RendererSceneCull : public RenderingMethod {

View File

@ -38,6 +38,10 @@
#include "rendering_server_globals.h" #include "rendering_server_globals.h"
#include "storage/texture_storage.h" #include "storage/texture_storage.h"
#ifndef XR_DISABLED
#include "servers/xr/xr_interface.h"
#endif // XR_DISABLED
static Transform2D _canvas_get_transform(RendererViewport::Viewport *p_viewport, RendererCanvasCull::Canvas *p_canvas, RendererViewport::Viewport::CanvasData *p_canvas_data, const Vector2 &p_vp_size) { static Transform2D _canvas_get_transform(RendererViewport::Viewport *p_viewport, RendererCanvasCull::Canvas *p_canvas, RendererViewport::Viewport::CanvasData *p_canvas_data, const Vector2 &p_vp_size) {
Transform2D xf = p_viewport->global_transform; Transform2D xf = p_viewport->global_transform;
@ -272,9 +276,11 @@ void RendererViewport::_draw_3d(Viewport *p_viewport) {
RENDER_TIMESTAMP("> Render 3D Scene"); RENDER_TIMESTAMP("> Render 3D Scene");
Ref<XRInterface> xr_interface; Ref<XRInterface> xr_interface;
#ifndef XR_DISABLED
if (p_viewport->use_xr && XRServer::get_singleton() != nullptr) { if (p_viewport->use_xr && XRServer::get_singleton() != nullptr) {
xr_interface = XRServer::get_singleton()->get_primary_interface(); xr_interface = XRServer::get_singleton()->get_primary_interface();
} }
#endif // XR_DISABLED
if (p_viewport->use_occlusion_culling) { if (p_viewport->use_occlusion_culling) {
if (p_viewport->occlusion_buffer_dirty) { if (p_viewport->occlusion_buffer_dirty) {
@ -713,7 +719,7 @@ void RendererViewport::_draw_viewport(Viewport *p_viewport) {
void RendererViewport::draw_viewports(bool p_swap_buffers) { void RendererViewport::draw_viewports(bool p_swap_buffers) {
timestamp_vp_map.clear(); timestamp_vp_map.clear();
#ifndef _3D_DISABLED #ifndef XR_DISABLED
// get our xr interface in case we need it // get our xr interface in case we need it
Ref<XRInterface> xr_interface; Ref<XRInterface> xr_interface;
XRServer *xr_server = XRServer::get_singleton(); XRServer *xr_server = XRServer::get_singleton();
@ -724,7 +730,7 @@ void RendererViewport::draw_viewports(bool p_swap_buffers) {
// retrieve the interface responsible for rendering // retrieve the interface responsible for rendering
xr_interface = xr_server->get_primary_interface(); xr_interface = xr_server->get_primary_interface();
} }
#endif // _3D_DISABLED #endif // XR_DISABLED
if (Engine::get_singleton()->is_editor_hint()) { if (Engine::get_singleton()->is_editor_hint()) {
RSG::texture_storage->set_default_clear_color(GLOBAL_GET("rendering/environment/defaults/default_clear_color")); RSG::texture_storage->set_default_clear_color(GLOBAL_GET("rendering/environment/defaults/default_clear_color"));
@ -757,7 +763,7 @@ void RendererViewport::draw_viewports(bool p_swap_buffers) {
bool visible = vp->viewport_to_screen_rect != Rect2(); bool visible = vp->viewport_to_screen_rect != Rect2();
#ifndef _3D_DISABLED #ifndef XR_DISABLED
if (vp->use_xr) { if (vp->use_xr) {
if (xr_interface.is_valid()) { if (xr_interface.is_valid()) {
// Ignore update mode we have to commit frames to our XR interface // Ignore update mode we have to commit frames to our XR interface
@ -772,7 +778,7 @@ void RendererViewport::draw_viewports(bool p_swap_buffers) {
vp->size = Size2(); vp->size = Size2();
} }
} else } else
#endif // _3D_DISABLED #endif // XR_DISABLED
{ {
if (vp->update_mode == RS::VIEWPORT_UPDATE_ALWAYS || vp->update_mode == RS::VIEWPORT_UPDATE_ONCE) { if (vp->update_mode == RS::VIEWPORT_UPDATE_ALWAYS || vp->update_mode == RS::VIEWPORT_UPDATE_ONCE) {
visible = true; visible = true;
@ -811,7 +817,7 @@ void RendererViewport::draw_viewports(bool p_swap_buffers) {
RENDER_TIMESTAMP("> Render Viewport " + itos(i)); RENDER_TIMESTAMP("> Render Viewport " + itos(i));
RSG::texture_storage->render_target_set_as_unused(vp->render_target); RSG::texture_storage->render_target_set_as_unused(vp->render_target);
#ifndef _3D_DISABLED #ifndef XR_DISABLED
if (vp->use_xr && xr_interface.is_valid()) { if (vp->use_xr && xr_interface.is_valid()) {
// Inform XR interface we're about to render its viewport, // Inform XR interface we're about to render its viewport,
// if this returns false we don't render. // if this returns false we don't render.
@ -860,7 +866,7 @@ void RendererViewport::draw_viewports(bool p_swap_buffers) {
} }
} }
} else } else
#endif // _3D_DISABLED #endif // XR_DISABLED
{ {
RSG::scene->set_debug_draw_mode(vp->debug_draw); RSG::scene->set_debug_draw_mode(vp->debug_draw);

View File

@ -37,10 +37,6 @@
#include "servers/rendering_server.h" #include "servers/rendering_server.h"
#include "storage/render_scene_buffers.h" #include "storage/render_scene_buffers.h"
#ifndef _3D_DISABLED
#include "servers/xr/xr_interface.h"
#endif // _3D_DISABLED
class RendererViewport { class RendererViewport {
public: public:
struct CanvasBase { struct CanvasBase {

View File

@ -34,13 +34,13 @@
#include "servers/rendering/storage/render_scene_buffers.h" #include "servers/rendering/storage/render_scene_buffers.h"
#include "servers/rendering_server.h" #include "servers/rendering_server.h"
#ifdef _3D_DISABLED #ifdef XR_DISABLED
// RendererSceneCull::render_camera is empty when 3D is disabled, but // RendererSceneCull::render_camera is empty when 3D is disabled, but
// it and RenderingMethod::render_camera have a parameter for XRInterface. // it and RenderingMethod::render_camera have a parameter for XRInterface.
#define XRInterface RefCounted #define XRInterface RefCounted
#else // 3D enabled #else
#include "servers/xr/xr_interface.h" #include "servers/xr/xr_interface.h"
#endif // _3D_DISABLED #endif // XR_DISABLED
class RenderingMethod { class RenderingMethod {
public: public:

View File

@ -87,13 +87,13 @@ void RenderingServerDefault::_draw(bool p_swap_buffers, double frame_step) {
RSG::rasterizer->end_frame(p_swap_buffers); RSG::rasterizer->end_frame(p_swap_buffers);
#ifndef _3D_DISABLED #ifndef XR_DISABLED
XRServer *xr_server = XRServer::get_singleton(); XRServer *xr_server = XRServer::get_singleton();
if (xr_server != nullptr) { if (xr_server != nullptr) {
// let our XR server know we're done so we can get our frame timing // let our XR server know we're done so we can get our frame timing
xr_server->end_frame(); xr_server->end_frame();
} }
#endif // _3D_DISABLED #endif // XR_DISABLED
RSG::canvas->update_visibility_notifiers(); RSG::canvas->update_visibility_notifiers();
RSG::scene->update_visibility_notifiers(); RSG::scene->update_visibility_notifiers();