Disable XRServer when disable_xr="yes"
Also use _XR_DISABLED instead of _3D_DISABLED where XR related code is used Also add a bunch of _XR_DISABLED into _XR_DISABLED Signed-off-by: Yevhen Babiichuk (DustDFG) <dfgdust@gmail.com>
This commit is contained in:
parent
eee71068c6
commit
a9805c7e8f
18 changed files with 112 additions and 43 deletions
|
@ -85,9 +85,12 @@
|
|||
#ifndef _3D_DISABLED
|
||||
#include "servers/physics_server_3d.h"
|
||||
#include "servers/physics_server_3d_dummy.h"
|
||||
#include "servers/xr_server.h"
|
||||
#endif // _3D_DISABLED
|
||||
|
||||
#ifndef _XR_DISABLED
|
||||
#include "servers/xr_server.h"
|
||||
#endif // _XR_DISABLED
|
||||
|
||||
#ifdef TESTS_ENABLED
|
||||
#include "tests/test_main.h"
|
||||
#endif
|
||||
|
@ -168,8 +171,10 @@ static NavigationServer3D *navigation_server_3d = nullptr;
|
|||
#ifndef _3D_DISABLED
|
||||
static PhysicsServer3DManager *physics_server_3d_manager = nullptr;
|
||||
static PhysicsServer3D *physics_server_3d = nullptr;
|
||||
static XRServer *xr_server = nullptr;
|
||||
#endif // _3D_DISABLED
|
||||
#ifndef _XR_DISABLED
|
||||
static XRServer *xr_server = nullptr;
|
||||
#endif // _XR_DISABLED
|
||||
// We error out if setup2() doesn't turn this true
|
||||
static bool _start_success = false;
|
||||
|
||||
|
@ -734,9 +739,9 @@ Error Main::test_setup() {
|
|||
|
||||
/** INITIALIZE SERVERS **/
|
||||
register_server_types();
|
||||
#ifndef _3D_DISABLED
|
||||
#ifndef _XR_DISABLED
|
||||
XRServer::set_xr_mode(XRServer::XRMODE_OFF); // Skip in tests.
|
||||
#endif // _3D_DISABLED
|
||||
#endif // _XR_DISABLED
|
||||
initialize_modules(MODULE_INITIALIZATION_LEVEL_SERVERS);
|
||||
GDExtensionManager::get_singleton()->initialize_extensions(GDExtension::INITIALIZATION_LEVEL_SERVERS);
|
||||
|
||||
|
@ -1741,7 +1746,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");
|
||||
goto error;
|
||||
}
|
||||
#endif // _3D_DISABLED
|
||||
#endif // _XR_DISABLED
|
||||
} else if (arg == "--benchmark") {
|
||||
OS::get_singleton()->set_use_benchmark(true);
|
||||
} else if (arg == "--benchmark-file") {
|
||||
|
@ -2573,7 +2578,7 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
|
|||
GLOBAL_DEF("display/window/ios/hide_status_bar", true);
|
||||
GLOBAL_DEF("display/window/ios/suppress_ui_gesture", true);
|
||||
|
||||
#ifndef _3D_DISABLED
|
||||
#ifndef _XR_DISABLED
|
||||
// XR project settings.
|
||||
GLOBAL_DEF_RST_BASIC("xr/openxr/enabled", false);
|
||||
GLOBAL_DEF_BASIC(PropertyInfo(Variant::STRING, "xr/openxr/default_action_map", PROPERTY_HINT_FILE, "*.tres"), "res://openxr_action_map.tres");
|
||||
|
@ -2603,7 +2608,7 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
|
|||
// EDITOR_DEF_RST("xr/openxr/in_editor", false);
|
||||
// GLOBAL_DEF("xr/openxr/in_editor", false);
|
||||
#endif // TOOLS_ENABLED
|
||||
#endif // _3D_DISABLED
|
||||
#endif // _XR_DISABLED
|
||||
|
||||
Engine::get_singleton()->set_frame_delay(frame_delay);
|
||||
|
||||
|
@ -3121,7 +3126,7 @@ Error Main::setup2(bool p_show_boot_logo) {
|
|||
OS::get_singleton()->benchmark_end_measure("Servers", "Audio");
|
||||
}
|
||||
|
||||
#ifndef _3D_DISABLED
|
||||
#ifndef _XR_DISABLED
|
||||
/* Initialize XR Server */
|
||||
|
||||
{
|
||||
|
@ -3131,7 +3136,7 @@ Error Main::setup2(bool p_show_boot_logo) {
|
|||
|
||||
OS::get_singleton()->benchmark_end_measure("Servers", "XR");
|
||||
}
|
||||
#endif // _3D_DISABLED
|
||||
#endif // _XR_DISABLED
|
||||
|
||||
OS::get_singleton()->benchmark_end_measure("Startup", "Servers");
|
||||
|
||||
|
@ -4306,9 +4311,9 @@ bool Main::iteration() {
|
|||
bool exit = false;
|
||||
|
||||
// process all our active interfaces
|
||||
#ifndef _3D_DISABLED
|
||||
#ifndef _XR_DISABLED
|
||||
XRServer::get_singleton()->_process();
|
||||
#endif // _3D_DISABLED
|
||||
#endif // _XR_DISABLED
|
||||
|
||||
NavigationServer2D::get_singleton()->sync();
|
||||
NavigationServer3D::get_singleton()->sync();
|
||||
|
@ -4557,13 +4562,13 @@ void Main::cleanup(bool p_force) {
|
|||
//clear global shader variables before scene and other graphics stuff are deinitialized.
|
||||
rendering_server->global_shader_parameters_clear();
|
||||
|
||||
#ifndef _3D_DISABLED
|
||||
#ifndef _XR_DISABLED
|
||||
if (xr_server) {
|
||||
// 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
|
||||
xr_server->set_primary_interface(Ref<XRInterface>());
|
||||
}
|
||||
#endif // _3D_DISABLED
|
||||
#endif // _XR_DISABLED
|
||||
|
||||
#ifdef TOOLS_ENABLED
|
||||
GDExtensionManager::get_singleton()->deinitialize_extensions(GDExtension::INITIALIZATION_LEVEL_EDITOR);
|
||||
|
@ -4593,11 +4598,11 @@ void Main::cleanup(bool p_force) {
|
|||
|
||||
EngineDebugger::deinitialize();
|
||||
|
||||
#ifndef _3D_DISABLED
|
||||
#ifndef _XR_DISABLED
|
||||
if (xr_server) {
|
||||
memdelete(xr_server);
|
||||
}
|
||||
#endif // _3D_DISABLED
|
||||
#endif // _XR_DISABLED
|
||||
|
||||
if (audio_server) {
|
||||
audio_server->finish();
|
||||
|
|
|
@ -687,7 +687,7 @@ void Viewport::_process_picking() {
|
|||
physics_picking_events.clear();
|
||||
return;
|
||||
}
|
||||
#ifndef _3D_DISABLED
|
||||
#ifndef _XR_DISABLED
|
||||
if (use_xr) {
|
||||
if (XRServer::get_singleton() != nullptr) {
|
||||
Ref<XRInterface> xr_interface = XRServer::get_singleton()->get_primary_interface();
|
||||
|
@ -698,7 +698,7 @@ void Viewport::_process_picking() {
|
|||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#endif // _XR_DISABLED
|
||||
|
||||
_drop_physics_mouseover(true);
|
||||
|
||||
|
@ -1004,7 +1004,7 @@ bool Viewport::_set_size(const Size2i &p_size, const Size2i &p_size_2d_override,
|
|||
size_2d_override = p_size_2d_override;
|
||||
stretch_transform = stretch_transform_new;
|
||||
|
||||
#ifndef _3D_DISABLED
|
||||
#ifndef _XR_DISABLED
|
||||
if (!use_xr) {
|
||||
#endif
|
||||
|
||||
|
@ -1014,7 +1014,7 @@ bool Viewport::_set_size(const Size2i &p_size, const Size2i &p_size_2d_override,
|
|||
RS::get_singleton()->viewport_set_size(viewport, 0, 0);
|
||||
}
|
||||
|
||||
#ifndef _3D_DISABLED
|
||||
#ifndef _XR_DISABLED
|
||||
} // if (!use_xr)
|
||||
#endif
|
||||
|
||||
|
@ -1043,7 +1043,7 @@ bool Viewport::_set_size(const Size2i &p_size, const Size2i &p_size_2d_override,
|
|||
}
|
||||
|
||||
Size2i Viewport::_get_size() const {
|
||||
#ifndef _3D_DISABLED
|
||||
#ifndef _XR_DISABLED
|
||||
if (use_xr) {
|
||||
if (XRServer::get_singleton() != nullptr) {
|
||||
Ref<XRInterface> xr_interface = XRServer::get_singleton()->get_primary_interface();
|
||||
|
@ -1054,7 +1054,7 @@ Size2i Viewport::_get_size() const {
|
|||
}
|
||||
return Size2i();
|
||||
}
|
||||
#endif // _3D_DISABLED
|
||||
#endif // _XR_DISABLED
|
||||
|
||||
return size;
|
||||
}
|
||||
|
@ -3645,9 +3645,11 @@ void Viewport::set_vrs_mode(Viewport::VRSMode p_vrs_mode) {
|
|||
case VRS_TEXTURE: {
|
||||
RS::get_singleton()->viewport_set_vrs_mode(viewport, RS::VIEWPORT_VRS_TEXTURE);
|
||||
} break;
|
||||
#ifndef _XR_DISABLED
|
||||
case VRS_XR: {
|
||||
RS::get_singleton()->viewport_set_vrs_mode(viewport, RS::VIEWPORT_VRS_XR);
|
||||
} break;
|
||||
#endif // _XR_DISABLED
|
||||
default: {
|
||||
RS::get_singleton()->viewport_set_vrs_mode(viewport, RS::VIEWPORT_VRS_DISABLED);
|
||||
} break;
|
||||
|
@ -4430,6 +4432,7 @@ void Viewport::_propagate_exit_world_3d(Node *p_node) {
|
|||
}
|
||||
}
|
||||
|
||||
#ifndef _XR_DISABLED
|
||||
void Viewport::set_use_xr(bool p_use_xr) {
|
||||
ERR_MAIN_THREAD_GUARD;
|
||||
if (use_xr != p_use_xr) {
|
||||
|
@ -4456,6 +4459,7 @@ bool Viewport::is_using_xr() {
|
|||
ERR_READ_THREAD_GUARD_V(false);
|
||||
return use_xr;
|
||||
}
|
||||
#endif // _XR_DISABLED
|
||||
|
||||
void Viewport::set_scaling_3d_mode(Scaling3DMode p_scaling_3d_mode) {
|
||||
ERR_MAIN_THREAD_GUARD;
|
||||
|
@ -4690,8 +4694,10 @@ void Viewport::_bind_methods() {
|
|||
ClassDB::bind_method(D_METHOD("set_disable_3d", "disable"), &Viewport::set_disable_3d);
|
||||
ClassDB::bind_method(D_METHOD("is_3d_disabled"), &Viewport::is_3d_disabled);
|
||||
|
||||
#ifndef _XR_DISABLED
|
||||
ClassDB::bind_method(D_METHOD("set_use_xr", "use"), &Viewport::set_use_xr);
|
||||
ClassDB::bind_method(D_METHOD("is_using_xr"), &Viewport::is_using_xr);
|
||||
#endif // _XR_DISABLED
|
||||
|
||||
ClassDB::bind_method(D_METHOD("set_scaling_3d_mode", "scaling_3d_mode"), &Viewport::set_scaling_3d_mode);
|
||||
ClassDB::bind_method(D_METHOD("get_scaling_3d_mode"), &Viewport::get_scaling_3d_mode);
|
||||
|
@ -4715,7 +4721,9 @@ void Viewport::_bind_methods() {
|
|||
ClassDB::bind_method(D_METHOD("get_vrs_texture"), &Viewport::get_vrs_texture);
|
||||
|
||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "disable_3d"), "set_disable_3d", "is_3d_disabled");
|
||||
#ifndef _XR_DISABLED
|
||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "use_xr"), "set_use_xr", "is_using_xr");
|
||||
#endif // _XR_DISABLED
|
||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "own_world_3d"), "set_use_own_world_3d", "is_using_own_world_3d");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "world_3d", PROPERTY_HINT_RESOURCE_TYPE, "World3D"), "set_world_3d", "get_world_3d");
|
||||
#endif // _3D_DISABLED
|
||||
|
@ -4865,7 +4873,9 @@ void Viewport::_bind_methods() {
|
|||
|
||||
BIND_ENUM_CONSTANT(VRS_DISABLED);
|
||||
BIND_ENUM_CONSTANT(VRS_TEXTURE);
|
||||
#ifndef _XR_DISABLED
|
||||
BIND_ENUM_CONSTANT(VRS_XR);
|
||||
#endif // _XR_DISABLED
|
||||
BIND_ENUM_CONSTANT(VRS_MAX);
|
||||
|
||||
BIND_ENUM_CONSTANT(VRS_UPDATE_DISABLED);
|
||||
|
|
|
@ -29,6 +29,8 @@ SConscript("text/SCsub")
|
|||
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_wrap_mt.cpp")
|
||||
|
||||
if not env["disable_xr"]:
|
||||
SConscript("xr/SCsub")
|
||||
env.add_source_files(env.servers_sources, "xr_server.cpp")
|
||||
|
||||
|
|
|
@ -93,6 +93,9 @@
|
|||
#include "physics_server_3d_dummy.h"
|
||||
#include "physics_server_3d_wrap_mt.h"
|
||||
#include "servers/extensions/physics_server_3d_extension.h"
|
||||
#endif // _3D_DISABLED
|
||||
|
||||
#ifndef _XR_DISABLED
|
||||
#include "xr/xr_body_tracker.h"
|
||||
#include "xr/xr_controller_tracker.h"
|
||||
#include "xr/xr_face_tracker.h"
|
||||
|
@ -101,7 +104,7 @@
|
|||
#include "xr/xr_interface_extension.h"
|
||||
#include "xr/xr_positional_tracker.h"
|
||||
#include "xr_server.h"
|
||||
#endif // _3D_DISABLED
|
||||
#endif // _XR_DISABLED
|
||||
|
||||
ShaderTypes *shader_types = nullptr;
|
||||
|
||||
|
@ -307,7 +310,9 @@ void register_server_types() {
|
|||
GLOBAL_DEF(PropertyInfo(Variant::STRING, PhysicsServer3DManager::setting_property_name, PROPERTY_HINT_ENUM, "DEFAULT"), "DEFAULT");
|
||||
|
||||
PhysicsServer3DManager::get_singleton()->register_server("Dummy", callable_mp_static(_create_dummy_physics_server_3d));
|
||||
#endif // _3D_DISABLED
|
||||
|
||||
#ifndef _XR_DISABLED
|
||||
GDREGISTER_ABSTRACT_CLASS(XRInterface);
|
||||
GDREGISTER_CLASS(XRVRS);
|
||||
GDREGISTER_CLASS(XRBodyTracker);
|
||||
|
@ -319,7 +324,7 @@ void register_server_types() {
|
|||
GDREGISTER_CLASS(XRPositionalTracker);
|
||||
GDREGISTER_CLASS(XRServer);
|
||||
GDREGISTER_ABSTRACT_CLASS(XRTracker);
|
||||
#endif // _3D_DISABLED
|
||||
#endif // _XR_DISABLED
|
||||
|
||||
GDREGISTER_ABSTRACT_CLASS(NavigationServer3D);
|
||||
GDREGISTER_CLASS(NavigationPathQueryParameters3D);
|
||||
|
@ -359,8 +364,10 @@ void register_server_singletons() {
|
|||
Engine::get_singleton()->add_singleton(Engine::Singleton("PhysicsServer2D", PhysicsServer2D::get_singleton(), "PhysicsServer2D"));
|
||||
#ifndef _3D_DISABLED
|
||||
Engine::get_singleton()->add_singleton(Engine::Singleton("PhysicsServer3D", PhysicsServer3D::get_singleton(), "PhysicsServer3D"));
|
||||
Engine::get_singleton()->add_singleton(Engine::Singleton("XRServer", XRServer::get_singleton(), "XRServer"));
|
||||
#endif // _3D_DISABLED
|
||||
#ifndef _XR_DISABLED
|
||||
Engine::get_singleton()->add_singleton(Engine::Singleton("XRServer", XRServer::get_singleton(), "XRServer"));
|
||||
#endif // _XR_DISABLED
|
||||
|
||||
OS::get_singleton()->benchmark_end_measure("Servers", "Register Singletons");
|
||||
}
|
||||
|
|
|
@ -31,7 +31,10 @@
|
|||
#include "renderer_compositor.h"
|
||||
|
||||
#include "core/config/project_settings.h"
|
||||
|
||||
#ifndef _XR_DISABLED
|
||||
#include "servers/xr_server.h"
|
||||
#endif // _XR_DISABLED
|
||||
|
||||
RendererCompositor *RendererCompositor::singleton = nullptr;
|
||||
|
||||
|
@ -42,21 +45,23 @@ RendererCompositor *RendererCompositor::create() {
|
|||
return _create_func();
|
||||
}
|
||||
|
||||
#ifndef _XR_DISABLED
|
||||
bool RendererCompositor::is_xr_enabled() const {
|
||||
return xr_enabled;
|
||||
}
|
||||
#endif // _XR_DISABLED
|
||||
|
||||
RendererCompositor::RendererCompositor() {
|
||||
ERR_FAIL_COND_MSG(singleton != nullptr, "A RendererCompositor singleton already exists.");
|
||||
singleton = this;
|
||||
|
||||
#ifndef _3D_DISABLED
|
||||
#ifndef _XR_DISABLED
|
||||
if (XRServer::get_xr_mode() == XRServer::XRMODE_DEFAULT) {
|
||||
xr_enabled = GLOBAL_GET("xr/shaders/enabled");
|
||||
} else {
|
||||
xr_enabled = XRServer::get_xr_mode() == XRServer::XRMODE_ON;
|
||||
}
|
||||
#endif // _3D_DISABLED
|
||||
#endif // _XR_DISABLED
|
||||
}
|
||||
|
||||
RendererCompositor::~RendererCompositor() {
|
||||
|
|
|
@ -69,7 +69,10 @@ struct BlitToScreen {
|
|||
|
||||
class RendererCompositor {
|
||||
private:
|
||||
#ifndef _XR_DISABLED
|
||||
bool xr_enabled = false;
|
||||
#endif // _XR_DISABLED
|
||||
|
||||
static RendererCompositor *singleton;
|
||||
|
||||
protected:
|
||||
|
@ -106,7 +109,9 @@ public:
|
|||
virtual double get_total_time() const = 0;
|
||||
|
||||
static bool is_low_end() { return low_end; };
|
||||
#ifndef _XR_DISABLED
|
||||
virtual bool is_xr_enabled() const;
|
||||
#endif // _XR_DISABLED
|
||||
|
||||
static RendererCompositor *get_singleton() { return singleton; }
|
||||
RendererCompositor();
|
||||
|
|
|
@ -2758,7 +2758,9 @@ void RendererSceneCull::render_camera(const Ref<RenderSceneBuffers> &p_render_bu
|
|||
}
|
||||
|
||||
camera_data.set_camera(transform, projection, is_orthogonal, vaspect, jitter, taa_frame_count, camera->visible_layers);
|
||||
} else {
|
||||
}
|
||||
#ifndef _XR_DISABLED
|
||||
else {
|
||||
// Setup our camera for our XR interface.
|
||||
// We can support multiple views here each with their own camera
|
||||
Transform3D transforms[RendererSceneRender::MAX_RENDER_VIEWS];
|
||||
|
@ -2786,6 +2788,7 @@ void RendererSceneCull::render_camera(const Ref<RenderSceneBuffers> &p_render_bu
|
|||
// 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 compositor = _render_get_compositor(p_camera, p_scenario);
|
||||
|
|
|
@ -46,9 +46,9 @@
|
|||
#include "servers/rendering/rendering_server_globals.h"
|
||||
#include "servers/rendering/storage/utilities.h"
|
||||
|
||||
#ifndef _3D_DISABLED
|
||||
#ifndef _XR_DISABLED
|
||||
#include "servers/xr/xr_interface.h"
|
||||
#endif // _3D_DISABLED
|
||||
#endif // _XR_DISABLED
|
||||
|
||||
class RenderingLightCuller;
|
||||
|
||||
|
|
|
@ -242,9 +242,11 @@ void RendererViewport::_draw_3d(Viewport *p_viewport) {
|
|||
RENDER_TIMESTAMP("> Render 3D Scene");
|
||||
|
||||
Ref<XRInterface> xr_interface;
|
||||
#ifndef _XR_DISABLED
|
||||
if (p_viewport->use_xr && XRServer::get_singleton() != nullptr) {
|
||||
xr_interface = XRServer::get_singleton()->get_primary_interface();
|
||||
}
|
||||
#endif // _XR_DISABLED
|
||||
|
||||
if (p_viewport->use_occlusion_culling) {
|
||||
if (p_viewport->occlusion_buffer_dirty) {
|
||||
|
@ -681,7 +683,7 @@ void RendererViewport::_draw_viewport(Viewport *p_viewport) {
|
|||
void RendererViewport::draw_viewports(bool p_swap_buffers) {
|
||||
timestamp_vp_map.clear();
|
||||
|
||||
#ifndef _3D_DISABLED
|
||||
#ifndef _XR_DISABLED
|
||||
// get our xr interface in case we need it
|
||||
Ref<XRInterface> xr_interface;
|
||||
XRServer *xr_server = XRServer::get_singleton();
|
||||
|
@ -692,7 +694,7 @@ void RendererViewport::draw_viewports(bool p_swap_buffers) {
|
|||
// retrieve the interface responsible for rendering
|
||||
xr_interface = xr_server->get_primary_interface();
|
||||
}
|
||||
#endif // _3D_DISABLED
|
||||
#endif // _XR_DISABLED
|
||||
|
||||
if (Engine::get_singleton()->is_editor_hint()) {
|
||||
RSG::texture_storage->set_default_clear_color(GLOBAL_GET("rendering/environment/defaults/default_clear_color"));
|
||||
|
@ -725,7 +727,7 @@ void RendererViewport::draw_viewports(bool p_swap_buffers) {
|
|||
|
||||
bool visible = vp->viewport_to_screen_rect != Rect2();
|
||||
|
||||
#ifndef _3D_DISABLED
|
||||
#ifndef _XR_DISABLED
|
||||
if (vp->use_xr) {
|
||||
if (xr_interface.is_valid()) {
|
||||
// Ignore update mode we have to commit frames to our XR interface
|
||||
|
@ -740,7 +742,7 @@ void RendererViewport::draw_viewports(bool p_swap_buffers) {
|
|||
vp->size = Size2();
|
||||
}
|
||||
} else
|
||||
#endif // _3D_DISABLED
|
||||
#endif // _XR_DISABLED
|
||||
{
|
||||
if (vp->update_mode == RS::VIEWPORT_UPDATE_ALWAYS || vp->update_mode == RS::VIEWPORT_UPDATE_ONCE) {
|
||||
visible = true;
|
||||
|
@ -779,7 +781,7 @@ void RendererViewport::draw_viewports(bool p_swap_buffers) {
|
|||
RENDER_TIMESTAMP("> Render Viewport " + itos(i));
|
||||
|
||||
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()) {
|
||||
// Inform XR interface we're about to render its viewport,
|
||||
// if this returns false we don't render.
|
||||
|
@ -817,7 +819,7 @@ void RendererViewport::draw_viewports(bool p_swap_buffers) {
|
|||
}
|
||||
}
|
||||
} else
|
||||
#endif // _3D_DISABLED
|
||||
#endif // _XR_DISABLED
|
||||
{
|
||||
RSG::scene->set_debug_draw_mode(vp->debug_draw);
|
||||
|
||||
|
@ -896,6 +898,7 @@ void RendererViewport::viewport_initialize(RID p_rid) {
|
|||
viewport->fsr_enabled = !RSG::rasterizer->is_low_end() && !viewport->disable_3d;
|
||||
}
|
||||
|
||||
#ifndef _XR_DISABLED
|
||||
void RendererViewport::viewport_set_use_xr(RID p_viewport, bool p_use_xr) {
|
||||
Viewport *viewport = viewport_owner.get_or_null(p_viewport);
|
||||
ERR_FAIL_NULL(viewport);
|
||||
|
@ -913,6 +916,7 @@ void RendererViewport::viewport_set_use_xr(RID p_viewport, bool p_use_xr) {
|
|||
_configure_3d_render_buffers(viewport);
|
||||
}
|
||||
}
|
||||
#endif // _XR_DISABLED
|
||||
|
||||
void RendererViewport::viewport_set_scaling_3d_mode(RID p_viewport, RS::ViewportScaling3DMode p_mode) {
|
||||
Viewport *viewport = viewport_owner.get_or_null(p_viewport);
|
||||
|
@ -971,8 +975,9 @@ void RendererViewport::viewport_set_size(RID p_viewport, int p_width, int p_heig
|
|||
|
||||
Viewport *viewport = viewport_owner.get_or_null(p_viewport);
|
||||
ERR_FAIL_NULL(viewport);
|
||||
#ifndef _XR_DISABLED
|
||||
ERR_FAIL_COND_MSG(viewport->use_xr, "Cannot set viewport size when using XR");
|
||||
|
||||
#endif // _XR_DISABLED
|
||||
_viewport_set_size(viewport, p_width, p_height, 1);
|
||||
}
|
||||
|
||||
|
|
|
@ -39,9 +39,9 @@
|
|||
#include "servers/rendering_server.h"
|
||||
#include "storage/render_scene_buffers.h"
|
||||
|
||||
#ifndef _3D_DISABLED
|
||||
#ifndef _XR_DISABLED
|
||||
#include "servers/xr/xr_interface.h"
|
||||
#endif // _3D_DISABLED
|
||||
#endif // _XR_DISABLED
|
||||
|
||||
class RendererViewport {
|
||||
public:
|
||||
|
@ -52,8 +52,10 @@ public:
|
|||
RID self;
|
||||
RID parent;
|
||||
|
||||
#ifndef _XR_DISABLED
|
||||
// use xr interface to override camera positioning and projection matrices and control output
|
||||
bool use_xr = false;
|
||||
#endif // _XR_DISABLED
|
||||
|
||||
Size2i internal_size;
|
||||
Size2i size;
|
||||
|
@ -177,7 +179,9 @@ public:
|
|||
snap_2d_transforms_to_pixel = false;
|
||||
snap_2d_vertices_to_pixel = false;
|
||||
|
||||
#ifndef _XR_DISABLED
|
||||
use_xr = false;
|
||||
#endif // _XR_DISABLED
|
||||
sdf_active = false;
|
||||
|
||||
time_cpu_begin = 0;
|
||||
|
@ -220,7 +224,9 @@ public:
|
|||
RID viewport_allocate();
|
||||
void viewport_initialize(RID p_rid);
|
||||
|
||||
#ifndef _XR_DISABLED
|
||||
void viewport_set_use_xr(RID p_viewport, bool p_use_xr);
|
||||
#endif // _XR_DISABLED
|
||||
|
||||
void viewport_set_size(RID p_viewport, int p_width, int p_height);
|
||||
|
||||
|
|
|
@ -34,13 +34,13 @@
|
|||
#include "servers/rendering/storage/render_scene_buffers.h"
|
||||
#include "servers/rendering_server.h"
|
||||
|
||||
#ifdef _3D_DISABLED
|
||||
#ifdef _XR_DISABLED
|
||||
// RendererSceneCull::render_camera is empty when 3D is disabled, but
|
||||
// it and RenderingMethod::render_camera have a parameter for XRInterface.
|
||||
#define XRInterface RefCounted
|
||||
#else // 3D enabled
|
||||
#include "servers/xr/xr_interface.h"
|
||||
#endif // _3D_DISABLED
|
||||
#endif // _XR_DISABLED
|
||||
|
||||
class RenderingMethod {
|
||||
public:
|
||||
|
|
|
@ -89,13 +89,13 @@ void RenderingServerDefault::_draw(bool p_swap_buffers, double frame_step) {
|
|||
|
||||
RSG::rasterizer->end_frame(p_swap_buffers);
|
||||
|
||||
#ifndef _3D_DISABLED
|
||||
#ifndef _XR_DISABLED
|
||||
XRServer *xr_server = XRServer::get_singleton();
|
||||
if (xr_server != nullptr) {
|
||||
// let our XR server know we're done so we can get our frame timing
|
||||
xr_server->end_frame();
|
||||
}
|
||||
#endif // _3D_DISABLED
|
||||
#endif // _XR_DISABLED
|
||||
|
||||
RSG::canvas->update_visibility_notifiers();
|
||||
RSG::scene->update_visibility_notifiers();
|
||||
|
|
|
@ -626,7 +626,9 @@ public:
|
|||
|
||||
FUNCRIDSPLIT(viewport)
|
||||
|
||||
#ifndef _XR_DISABLED
|
||||
FUNC2(viewport_set_use_xr, RID, bool)
|
||||
#endif // _XR_DISABLED
|
||||
FUNC3(viewport_set_size, RID, int, int)
|
||||
|
||||
FUNC2(viewport_set_active, RID, bool)
|
||||
|
|
|
@ -6052,7 +6052,7 @@ ShaderLanguage::Node *ShaderLanguage::_parse_expression(BlockNode *p_block, cons
|
|||
//being sampler, this either comes from a uniform
|
||||
ShaderNode::Uniform *u = &shader->uniforms[varname];
|
||||
ERR_CONTINUE(u->type != call_function->arguments[i].type); //this should have been validated previously
|
||||
|
||||
#ifndef _XR_DISABLED
|
||||
if (RendererCompositor::get_singleton()->is_xr_enabled() && is_custom_func) {
|
||||
ShaderNode::Uniform::Hint hint = u->hint;
|
||||
|
||||
|
@ -6061,6 +6061,7 @@ ShaderLanguage::Node *ShaderLanguage::_parse_expression(BlockNode *p_block, cons
|
|||
return nullptr;
|
||||
}
|
||||
}
|
||||
#endif // _XR_DISABLED
|
||||
|
||||
//propagate
|
||||
if (!_propagate_function_call_sampler_uniform_settings(name, i, u->filter, u->repeat, u->hint)) {
|
||||
|
|
|
@ -2781,7 +2781,9 @@ void RenderingServer::_bind_methods() {
|
|||
/* VIEWPORT */
|
||||
|
||||
ClassDB::bind_method(D_METHOD("viewport_create"), &RenderingServer::viewport_create);
|
||||
#ifndef _XR_DISABLED
|
||||
ClassDB::bind_method(D_METHOD("viewport_set_use_xr", "viewport", "use_xr"), &RenderingServer::viewport_set_use_xr);
|
||||
#endif // _XR_DISABLED
|
||||
ClassDB::bind_method(D_METHOD("viewport_set_size", "viewport", "width", "height"), &RenderingServer::viewport_set_size);
|
||||
ClassDB::bind_method(D_METHOD("viewport_set_active", "viewport", "active"), &RenderingServer::viewport_set_active);
|
||||
ClassDB::bind_method(D_METHOD("viewport_set_parent_viewport", "viewport", "parent_viewport"), &RenderingServer::viewport_set_parent_viewport);
|
||||
|
@ -2928,7 +2930,9 @@ void RenderingServer::_bind_methods() {
|
|||
|
||||
BIND_ENUM_CONSTANT(VIEWPORT_VRS_DISABLED);
|
||||
BIND_ENUM_CONSTANT(VIEWPORT_VRS_TEXTURE);
|
||||
#ifndef _XR_DISABLED
|
||||
BIND_ENUM_CONSTANT(VIEWPORT_VRS_XR);
|
||||
#endif // _XR_DISABLED
|
||||
BIND_ENUM_CONSTANT(VIEWPORT_VRS_MAX);
|
||||
|
||||
BIND_ENUM_CONSTANT(VIEWPORT_VRS_UPDATE_DISABLED);
|
||||
|
@ -3656,7 +3660,9 @@ void RenderingServer::init() {
|
|||
GLOBAL_DEF_RST(PropertyInfo(Variant::INT, "rendering/limits/opengl/max_renderable_lights", PROPERTY_HINT_RANGE, "2,256,1"), 32);
|
||||
GLOBAL_DEF_RST(PropertyInfo(Variant::INT, "rendering/limits/opengl/max_lights_per_object", PROPERTY_HINT_RANGE, "2,1024,1"), 8);
|
||||
|
||||
#ifndef _XR_DISABLED
|
||||
GLOBAL_DEF_RST_BASIC("xr/shaders/enabled", false);
|
||||
#endif // _XR_DISABLED
|
||||
|
||||
GLOBAL_DEF("debug/shader_language/warnings/enable", true);
|
||||
GLOBAL_DEF("debug/shader_language/warnings/treat_warnings_as_errors", false);
|
||||
|
|
|
@ -893,7 +893,9 @@ public:
|
|||
VIEWPORT_SCALING_3D_MODE_OFF = 255, // for internal use only
|
||||
};
|
||||
|
||||
#ifndef _XR_DISABLED
|
||||
virtual void viewport_set_use_xr(RID p_viewport, bool p_use_xr) = 0;
|
||||
#endif // _XR_DISABLED
|
||||
virtual void viewport_set_size(RID p_viewport, int p_width, int p_height) = 0;
|
||||
virtual void viewport_set_active(RID p_viewport, bool p_active) = 0;
|
||||
virtual void viewport_set_parent_viewport(RID p_viewport, RID p_parent_viewport) = 0;
|
||||
|
@ -1070,7 +1072,9 @@ public:
|
|||
enum ViewportVRSMode {
|
||||
VIEWPORT_VRS_DISABLED,
|
||||
VIEWPORT_VRS_TEXTURE,
|
||||
#ifndef _XR_DISABLED
|
||||
VIEWPORT_VRS_XR,
|
||||
#endif // _XR_DISABLED
|
||||
VIEWPORT_VRS_MAX,
|
||||
};
|
||||
|
||||
|
|
|
@ -31,6 +31,8 @@
|
|||
#include "xr_interface.h"
|
||||
#include "servers/rendering/renderer_compositor.h"
|
||||
|
||||
//#ifndef _XR_DISABLED // WORKAROUND
|
||||
|
||||
void XRInterface::_bind_methods() {
|
||||
ADD_SIGNAL(MethodInfo("play_area_changed", PropertyInfo(Variant::INT, "mode")));
|
||||
|
||||
|
@ -211,3 +213,5 @@ Array XRInterface::get_supported_environment_blend_modes() {
|
|||
default_blend_modes.push_back(XR_ENV_BLEND_MODE_OPAQUE);
|
||||
return default_blend_modes;
|
||||
}
|
||||
|
||||
//#endif // _XR_DISABLED
|
||||
|
|
|
@ -31,6 +31,8 @@
|
|||
#ifndef XR_INTERFACE_H
|
||||
#define XR_INTERFACE_H
|
||||
|
||||
#ifndef _XR_DISABLED // WORKAROUND
|
||||
|
||||
#include "core/math/projection.h"
|
||||
#include "core/os/thread_safe.h"
|
||||
#include "servers/xr_server.h"
|
||||
|
@ -166,4 +168,6 @@ VARIANT_ENUM_CAST(XRInterface::TrackingStatus);
|
|||
VARIANT_ENUM_CAST(XRInterface::PlayAreaMode);
|
||||
VARIANT_ENUM_CAST(XRInterface::EnvironmentBlendMode);
|
||||
|
||||
#endif // _XR_DISABLED
|
||||
|
||||
#endif // XR_INTERFACE_H
|
||||
|
|
Loading…
Reference in a new issue