Skip to content

Commit 67d4a24

Browse files
committed
Merge pull request #103267 from YeldhamDev/reality_got_too_extended
Allow to compile the engine without XR support
2 parents a5dbf3b + aea559b commit 67d4a24

33 files changed

+77
-57
lines changed

SConstruct

+4-1
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,6 @@ opts.Add(BoolVariable("vulkan", "Enable the vulkan rendering driver", True))
186186
opts.Add(BoolVariable("opengl3", "Enable the OpenGL/GLES3 rendering driver", True))
187187
opts.Add(BoolVariable("d3d12", "Enable the Direct3D 12 rendering driver on supported platforms", False))
188188
opts.Add(BoolVariable("metal", "Enable the Metal rendering driver on supported platforms (Apple arm64 only)", False))
189-
opts.Add(BoolVariable("openxr", "Enable the OpenXR driver", True))
190189
opts.Add(BoolVariable("use_volk", "Use the volk library to load the Vulkan loader dynamically", True))
191190
opts.Add(BoolVariable("disable_exceptions", "Force disabling exception handling code", True))
192191
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")
220219
opts.Add("import_env_vars", "A comma-separated list of environment variables to copy from the outer environment.", "")
221220
opts.Add(BoolVariable("disable_3d", "Disable 3D nodes for a smaller executable", False))
222221
opts.Add(BoolVariable("disable_advanced_gui", "Disable advanced GUI nodes and behaviors", False))
222+
opts.Add(BoolVariable("disable_xr", "Disable XR nodes and server", False))
223223
opts.Add("build_profile", "Path to a file containing a feature build profile", "")
224224
opts.Add(BoolVariable("modules_enabled_by_default", "If no, disable all modules except ones explicitly enabled", True))
225225
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"]:
995995
Exit(255)
996996
else:
997997
env.Append(CPPDEFINES=["_3D_DISABLED"])
998+
env["disable_xr"] = True
998999
if env["disable_advanced_gui"]:
9991000
if env.editor_build:
10001001
print_error(
@@ -1003,6 +1004,8 @@ if env["disable_advanced_gui"]:
10031004
Exit(255)
10041005
else:
10051006
env.Append(CPPDEFINES=["ADVANCED_GUI_DISABLED"])
1007+
if env["disable_xr"]:
1008+
env.Append(CPPDEFINES=["XR_DISABLED"])
10061009
if env["minizip"]:
10071010
env.Append(CPPDEFINES=["MINIZIP_ENABLED"])
10081011
if env["brotli"]:

editor/editor_build_profile.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ const char *EditorBuildProfile::build_option_identifiers[BUILD_OPTION_MAX] = {
4646
"disable_2d_physics",
4747
"disable_3d_physics",
4848
"disable_navigation",
49-
"openxr",
49+
"disable_xr",
5050
"rendering_device", // FIXME: there's no scons option to disable rendering device
5151
"opengl3",
5252
"vulkan",
@@ -82,7 +82,7 @@ const bool EditorBuildProfile::build_option_disable_values[BUILD_OPTION_MAX] = {
8282
true, // PHYSICS_2D
8383
true, // PHYSICS_3D
8484
true, // NAVIGATION
85-
false, // XR
85+
true, // XR
8686
false, // RENDERING_DEVICE
8787
false, // OPENGL
8888
false, // VULKAN

editor/gui/editor_run_bar.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -587,7 +587,7 @@ EditorRunBar::EditorRunBar() {
587587
run_native->connect("native_run", callable_mp(this, &EditorRunBar::_run_native));
588588

589589
bool add_play_xr_mode_options = false;
590-
#ifndef _3D_DISABLED
590+
#ifndef XR_DISABLED
591591
if (OS::get_singleton()->has_feature("xr_editor") &&
592592
(XRServer::get_xr_mode() == XRServer::XRMODE_ON ||
593593
(XRServer::get_xr_mode() == XRServer::XRMODE_DEFAULT && GLOBAL_GET("xr/openxr/enabled")))) {
@@ -596,7 +596,7 @@ EditorRunBar::EditorRunBar() {
596596
// either regular mode or XR mode.
597597
add_play_xr_mode_options = true;
598598
}
599-
#endif // _3D_DISABLED
599+
#endif // XR_DISABLED
600600

601601
if (add_play_xr_mode_options) {
602602
MenuButton *menu_button = memnew(MenuButton);

main/main.cpp

+10-10
Original file line numberDiff line numberDiff line change
@@ -713,9 +713,9 @@ Error Main::test_setup() {
713713

714714
/** INITIALIZE SERVERS **/
715715
register_server_types();
716-
#ifndef _3D_DISABLED
716+
#ifndef XR_DISABLED
717717
XRServer::set_xr_mode(XRServer::XRMODE_OFF); // Skip in tests.
718-
#endif // _3D_DISABLED
718+
#endif // XR_DISABLED
719719
initialize_modules(MODULE_INITIALIZATION_LEVEL_SERVERS);
720720
GDExtensionManager::get_singleton()->initialize_extensions(GDExtension::INITIALIZATION_LEVEL_SERVERS);
721721

@@ -1734,7 +1734,7 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
17341734
OS::get_singleton()->disable_crash_handler();
17351735
} else if (arg == "--skip-breakpoints") {
17361736
skip_breakpoints = true;
1737-
#ifndef _3D_DISABLED
1737+
#ifndef XR_DISABLED
17381738
} else if (arg == "--xr-mode") {
17391739
if (N) {
17401740
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
17531753
OS::get_singleton()->print("Missing --xr-mode argument, aborting.\n");
17541754
goto error;
17551755
}
1756-
#endif // _3D_DISABLED
1756+
#endif // XR_DISABLED
17571757
} else if (arg == "--benchmark") {
17581758
OS::get_singleton()->set_use_benchmark(true);
17591759
} else if (arg == "--benchmark-file") {
@@ -3196,7 +3196,7 @@ Error Main::setup2(bool p_show_boot_logo) {
31963196
OS::get_singleton()->benchmark_end_measure("Servers", "Audio");
31973197
}
31983198

3199-
#ifndef _3D_DISABLED
3199+
#ifndef XR_DISABLED
32003200
/* Initialize XR Server */
32013201

32023202
{
@@ -3206,7 +3206,7 @@ Error Main::setup2(bool p_show_boot_logo) {
32063206

32073207
OS::get_singleton()->benchmark_end_measure("Servers", "XR");
32083208
}
3209-
#endif // _3D_DISABLED
3209+
#endif // XR_DISABLED
32103210

32113211
OS::get_singleton()->benchmark_end_measure("Startup", "Servers");
32123212

@@ -4429,9 +4429,9 @@ bool Main::iteration() {
44294429
bool exit = false;
44304430

44314431
// process all our active interfaces
4432-
#ifndef _3D_DISABLED
4432+
#ifndef XR_DISABLED
44334433
XRServer::get_singleton()->_process();
4434-
#endif // _3D_DISABLED
4434+
#endif // XR_DISABLED
44354435

44364436
NavigationServer2D::get_singleton()->sync();
44374437
NavigationServer3D::get_singleton()->sync();
@@ -4685,13 +4685,13 @@ void Main::cleanup(bool p_force) {
46854685
//clear global shader variables before scene and other graphics stuff are deinitialized.
46864686
rendering_server->global_shader_parameters_clear();
46874687

4688-
#ifndef _3D_DISABLED
4688+
#ifndef XR_DISABLED
46894689
if (xr_server) {
46904690
// Now that we're unregistering properly in plugins we need to keep access to xr_server for a little longer
46914691
// We do however unset our primary interface
46924692
xr_server->set_primary_interface(Ref<XRInterface>());
46934693
}
4694-
#endif // _3D_DISABLED
4694+
#endif // XR_DISABLED
46954695

46964696
#ifdef TOOLS_ENABLED
46974697
GDExtensionManager::get_singleton()->deinitialize_extensions(GDExtension::INITIALIZATION_LEVEL_EDITOR);

modules/mobile_vr/config.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
def can_build(env, platform):
2-
return not env["disable_3d"]
2+
return not env["disable_xr"]
33

44

55
def configure(env):

modules/openxr/config.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
def can_build(env, platform):
22
if platform in ("linuxbsd", "windows", "android", "macos"):
3-
return env["openxr"] and not env["disable_3d"]
3+
return not env["disable_xr"]
44
else:
5-
# not supported on these platforms
5+
# Not supported on these platforms.
66
return False
77

88

modules/openxr/scene/openxr_composition_layer.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
#include "../openxr_interface.h"
3636

3737
#include "scene/3d/mesh_instance_3d.h"
38-
#include "scene/3d/xr_nodes.h"
38+
#include "scene/3d/xr/xr_nodes.h"
3939
#include "scene/main/viewport.h"
4040

4141
#include "platform/android/api/java_class_wrapper.h"

modules/openxr/scene/openxr_visibility_mask.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232

3333
#include "../extensions/openxr_visibility_mask_extension.h"
3434
#include "../openxr_interface.h"
35-
#include "scene/3d/xr_nodes.h"
35+
#include "scene/3d/xr/xr_nodes.h"
3636

3737
void OpenXRVisibilityMask::_bind_methods() {
3838
}

modules/webxr/config.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
def can_build(env, platform):
2-
return env["opengl3"] and not env["disable_3d"]
2+
return env["opengl3"] and not env["disable_xr"]
33

44

55
def configure(env):

platform/android/java_godot_lib_jni.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -273,15 +273,15 @@ JNIEXPORT jboolean JNICALL Java_org_godotengine_godot_GodotLib_step(JNIEnv *env,
273273

274274
if (step.get() == STEP_SHOW_LOGO) {
275275
bool xr_enabled = false;
276-
#ifndef _3D_DISABLED
276+
#ifndef XR_DISABLED
277277
// Unlike PCVR, there's no additional 2D screen onto which to render the boot logo,
278278
// so we skip this step if xr is enabled.
279279
if (XRServer::get_xr_mode() == XRServer::XRMODE_DEFAULT) {
280280
xr_enabled = GLOBAL_GET("xr/shaders/enabled");
281281
} else {
282282
xr_enabled = XRServer::get_xr_mode() == XRServer::XRMODE_ON;
283283
}
284-
#endif // _3D_DISABLED
284+
#endif // XR_DISABLED
285285
if (!xr_enabled) {
286286
Main::setup_boot_logo();
287287
}

scene/3d/SCsub

+2
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,5 @@ env.add_source_files(env.scene_sources, "*.cpp")
77

88
# Chain load SCsubs
99
SConscript("physics/SCsub")
10+
if not env["disable_xr"]:
11+
SConscript("xr/SCsub")

scene/3d/xr/SCsub

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
#!/usr/bin/env python
2+
from misc.utility.scons_hints import *
3+
4+
Import("env")
5+
6+
env.add_source_files(env.scene_sources, "*.cpp")
File renamed without changes.
File renamed without changes.
File renamed without changes.

scene/3d/xr_face_modifier_3d.h scene/3d/xr/xr_face_modifier_3d.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
#ifndef XR_FACE_MODIFIER_3D_H
3232
#define XR_FACE_MODIFIER_3D_H
3333

34-
#include "mesh_instance_3d.h"
34+
#include "scene/3d/mesh_instance_3d.h"
3535
#include "scene/3d/node_3d.h"
3636

3737
/**
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.

scene/main/viewport.cpp

+4-4
Original file line numberDiff line numberDiff line change
@@ -697,7 +697,7 @@ void Viewport::_process_picking() {
697697
physics_picking_events.clear();
698698
return;
699699
}
700-
#ifndef _3D_DISABLED
700+
#ifndef XR_DISABLED
701701
if (use_xr) {
702702
if (XRServer::get_singleton() != nullptr) {
703703
Ref<XRInterface> xr_interface = XRServer::get_singleton()->get_primary_interface();
@@ -708,7 +708,7 @@ void Viewport::_process_picking() {
708708
}
709709
}
710710
}
711-
#endif
711+
#endif // XR_DISABLED
712712

713713
_drop_physics_mouseover(true);
714714

@@ -1054,7 +1054,7 @@ bool Viewport::_set_size(const Size2i &p_size, const Size2 &p_size_2d_override,
10541054
}
10551055

10561056
Size2i Viewport::_get_size() const {
1057-
#ifndef _3D_DISABLED
1057+
#ifndef XR_DISABLED
10581058
if (use_xr) {
10591059
if (XRServer::get_singleton() != nullptr) {
10601060
Ref<XRInterface> xr_interface = XRServer::get_singleton()->get_primary_interface();
@@ -1065,7 +1065,7 @@ Size2i Viewport::_get_size() const {
10651065
}
10661066
return Size2i();
10671067
}
1068-
#endif // _3D_DISABLED
1068+
#endif // XR_DISABLED
10691069

10701070
return size;
10711071
}

scene/register_scene_types.cpp

+6-4
Original file line numberDiff line numberDiff line change
@@ -293,10 +293,10 @@
293293
#include "scene/3d/visible_on_screen_notifier_3d.h"
294294
#include "scene/3d/voxel_gi.h"
295295
#include "scene/3d/world_environment.h"
296-
#include "scene/3d/xr_body_modifier_3d.h"
297-
#include "scene/3d/xr_face_modifier_3d.h"
298-
#include "scene/3d/xr_hand_modifier_3d.h"
299-
#include "scene/3d/xr_nodes.h"
296+
#include "scene/3d/xr/xr_body_modifier_3d.h"
297+
#include "scene/3d/xr/xr_face_modifier_3d.h"
298+
#include "scene/3d/xr/xr_hand_modifier_3d.h"
299+
#include "scene/3d/xr/xr_nodes.h"
300300
#include "scene/animation/root_motion_view.h"
301301
#include "scene/resources/3d/box_shape_3d.h"
302302
#include "scene/resources/3d/capsule_shape_3d.h"
@@ -555,6 +555,7 @@ void register_scene_types() {
555555
GDREGISTER_VIRTUAL_CLASS(GeometryInstance3D);
556556
GDREGISTER_CLASS(Camera3D);
557557
GDREGISTER_CLASS(AudioListener3D);
558+
#ifndef XR_DISABLED
558559
GDREGISTER_CLASS(XRCamera3D);
559560
GDREGISTER_CLASS(XRNode3D);
560561
GDREGISTER_CLASS(XRController3D);
@@ -563,6 +564,7 @@ void register_scene_types() {
563564
GDREGISTER_CLASS(XRBodyModifier3D);
564565
GDREGISTER_CLASS(XRHandModifier3D);
565566
GDREGISTER_CLASS(XRFaceModifier3D);
567+
#endif // XR_DISABLED
566568
GDREGISTER_CLASS(MeshInstance3D);
567569
GDREGISTER_CLASS(OccluderInstance3D);
568570
GDREGISTER_ABSTRACT_CLASS(Occluder3D);

scu_builders.py

+1
Original file line numberDiff line numberDiff line change
@@ -343,6 +343,7 @@ def generate_scu_files(max_includes_per_scu):
343343
process_folder(["scene/3d"])
344344
process_folder(["scene/3d/physics"])
345345
process_folder(["scene/3d/physics/joints"])
346+
process_folder(["scene/3d/xr"])
346347
process_folder(["scene/animation"])
347348
process_folder(["scene/gui"])
348349
process_folder(["scene/main"])

servers/SCsub

+4-2
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,10 @@ SConscript("text/SCsub")
2929
if not env["disable_3d"]:
3030
env.add_source_files(env.servers_sources, "physics_server_3d.cpp")
3131
env.add_source_files(env.servers_sources, "physics_server_3d_wrap_mt.cpp")
32-
SConscript("xr/SCsub")
33-
env.add_source_files(env.servers_sources, "xr_server.cpp")
32+
33+
if not env["disable_xr"]:
34+
env.add_source_files(env.servers_sources, "xr_server.cpp")
35+
SConscript("xr/SCsub")
3436

3537
lib = env.add_library("servers", env.servers_sources)
3638

servers/register_server_types.cpp

+4
Original file line numberDiff line numberDiff line change
@@ -307,6 +307,7 @@ void register_server_types() {
307307

308308
PhysicsServer3DManager::get_singleton()->register_server("Dummy", callable_mp_static(_create_dummy_physics_server_3d));
309309

310+
#ifndef XR_DISABLED
310311
GDREGISTER_ABSTRACT_CLASS(XRInterface);
311312
GDREGISTER_CLASS(XRVRS);
312313
GDREGISTER_CLASS(XRBodyTracker);
@@ -318,6 +319,7 @@ void register_server_types() {
318319
GDREGISTER_CLASS(XRPositionalTracker);
319320
GDREGISTER_CLASS(XRServer);
320321
GDREGISTER_ABSTRACT_CLASS(XRTracker);
322+
#endif // XR_DISABLED
321323
#endif // _3D_DISABLED
322324

323325
GDREGISTER_ABSTRACT_CLASS(NavigationServer3D);
@@ -358,7 +360,9 @@ void register_server_singletons() {
358360
Engine::get_singleton()->add_singleton(Engine::Singleton("PhysicsServer2D", PhysicsServer2D::get_singleton(), "PhysicsServer2D"));
359361
#ifndef _3D_DISABLED
360362
Engine::get_singleton()->add_singleton(Engine::Singleton("PhysicsServer3D", PhysicsServer3D::get_singleton(), "PhysicsServer3D"));
363+
#ifndef XR_DISABLED
361364
Engine::get_singleton()->add_singleton(Engine::Singleton("XRServer", XRServer::get_singleton(), "XRServer"));
365+
#endif // XR_DISABLED
362366
#endif // _3D_DISABLED
363367

364368
OS::get_singleton()->benchmark_end_measure("Servers", "Register Singletons");

servers/rendering/renderer_compositor.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -50,13 +50,13 @@ RendererCompositor::RendererCompositor() {
5050
ERR_FAIL_COND_MSG(singleton != nullptr, "A RendererCompositor singleton already exists.");
5151
singleton = this;
5252

53-
#ifndef _3D_DISABLED
53+
#ifndef XR_DISABLED
5454
if (XRServer::get_xr_mode() == XRServer::XRMODE_DEFAULT) {
5555
xr_enabled = GLOBAL_GET("xr/shaders/enabled");
5656
} else {
5757
xr_enabled = XRServer::get_xr_mode() == XRServer::XRMODE_ON;
5858
}
59-
#endif // _3D_DISABLED
59+
#endif // XR_DISABLED
6060
}
6161

6262
RendererCompositor::~RendererCompositor() {

servers/rendering/renderer_rd/effects/vrs.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ void VRS::update_vrs_texture(RID p_vrs_fb, RID p_render_target) {
135135
copy_vrs(rd_texture, p_vrs_fb, layers > 1);
136136
}
137137
}
138-
#ifndef _3D_DISABLED
138+
#ifndef XR_DISABLED
139139
} else if (vrs_mode == RS::VIEWPORT_VRS_XR) {
140140
Ref<XRInterface> interface = XRServer::get_singleton()->get_primary_interface();
141141
if (interface.is_valid()) {
@@ -150,7 +150,7 @@ void VRS::update_vrs_texture(RID p_vrs_fb, RID p_render_target) {
150150
}
151151
}
152152
}
153-
#endif // _3D_DISABLED
153+
#endif // XR_DISABLED
154154
}
155155

156156
if (vrs_update_mode == RS::VIEWPORT_VRS_UPDATE_ONCE) {

servers/rendering/renderer_scene_cull.cpp

+2
Original file line numberDiff line numberDiff line change
@@ -2726,6 +2726,7 @@ void RendererSceneCull::render_camera(const Ref<RenderSceneBuffers> &p_render_bu
27262726
}
27272727

27282728
camera_data.set_camera(transform, projection, is_orthogonal, is_frustum, vaspect, jitter, taa_frame_count, camera->visible_layers);
2729+
#ifndef XR_DISABLED
27292730
} else {
27302731
XRServer *xr_server = XRServer::get_singleton();
27312732

@@ -2763,6 +2764,7 @@ void RendererSceneCull::render_camera(const Ref<RenderSceneBuffers> &p_render_bu
27632764
} else {
27642765
// 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...
27652766
}
2767+
#endif // XR_DISABLED
27662768
}
27672769

27682770
RID environment = _render_get_environment(p_camera, p_scenario);

0 commit comments

Comments
 (0)