Browse Source

Merge pull request #50563 from dsnopek/webxr-enable-ci

Re-enable building WebXR in GitHub Actions
Rémi Verschelde 4 years ago
parent
commit
a255b186bc

+ 1 - 1
.github/workflows/javascript_builds.yml

@@ -4,7 +4,7 @@ on: [push, pull_request]
 # Global Settings
 # Global Settings
 env:
 env:
   GODOT_BASE_BRANCH: master
   GODOT_BASE_BRANCH: master
-  SCONSFLAGS: platform=javascript verbose=yes warnings=extra debug_symbols=no module_webxr_enabled=no --jobs=2
+  SCONSFLAGS: platform=javascript verbose=yes warnings=extra debug_symbols=no --jobs=2
   SCONS_CACHE_LIMIT: 4096
   SCONS_CACHE_LIMIT: 4096
   EM_VERSION: 2.0.25
   EM_VERSION: 2.0.25
   EM_CACHE_FOLDER: 'emsdk-cache'
   EM_CACHE_FOLDER: 'emsdk-cache'

+ 17 - 0
modules/webxr/webxr_interface_js.cpp

@@ -35,6 +35,7 @@
 #include "core/os/os.h"
 #include "core/os/os.h"
 #include "emscripten.h"
 #include "emscripten.h"
 #include "godot_webxr.h"
 #include "godot_webxr.h"
+#include "servers/rendering/renderer_compositor.h"
 #include <stdlib.h>
 #include <stdlib.h>
 
 
 void _emwebxr_on_session_supported(char *p_session_mode, int p_supported) {
 void _emwebxr_on_session_supported(char *p_session_mode, int p_supported) {
@@ -376,6 +377,22 @@ void WebXRInterfaceJS::commit_for_eye(XRInterface::Eyes p_eye, RID p_render_targ
 		return;
 		return;
 	}
 	}
 	godot_webxr_commit_for_eye(p_eye);
 	godot_webxr_commit_for_eye(p_eye);
+}
+
+Vector<BlitToScreen> WebXRInterfaceJS::commit_views(RID p_render_target, const Rect2 &p_screen_rect) {
+	Vector<BlitToScreen> blit_to_screen;
+
+	if (!initialized) {
+		return blit_to_screen;
+	}
+
+	// @todo Refactor this to be based on "views" rather than "eyes".
+	godot_webxr_commit_for_eye(XRInterface::EYE_LEFT);
+	if (godot_webxr_get_view_count() > 1) {
+		godot_webxr_commit_for_eye(XRInterface::EYE_RIGHT);
+	}
+
+	return blit_to_screen;
 };
 };
 
 
 void WebXRInterfaceJS::process() {
 void WebXRInterfaceJS::process() {

+ 1 - 0
modules/webxr/webxr_interface_js.h

@@ -89,6 +89,7 @@ public:
 	virtual CameraMatrix get_projection_for_view(uint32_t p_view, real_t p_aspect, real_t p_z_near, real_t p_z_far) override;
 	virtual CameraMatrix get_projection_for_view(uint32_t p_view, real_t p_aspect, real_t p_z_near, real_t p_z_far) override;
 	virtual unsigned int get_external_texture_for_eye(XRInterface::Eyes p_eye) override;
 	virtual unsigned int get_external_texture_for_eye(XRInterface::Eyes p_eye) override;
 	virtual void commit_for_eye(XRInterface::Eyes p_eye, RID p_render_target, const Rect2 &p_screen_rect) override;
 	virtual void commit_for_eye(XRInterface::Eyes p_eye, RID p_render_target, const Rect2 &p_screen_rect) override;
+	virtual Vector<BlitToScreen> commit_views(RID p_render_target, const Rect2 &p_screen_rect) override;
 
 
 	virtual void process() override;
 	virtual void process() override;
 	virtual void notification(int p_what) override;
 	virtual void notification(int p_what) override;