diff --git a/Cargo.lock b/Cargo.lock index 424814b84a7..c3fe8ce3951 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -6778,7 +6778,7 @@ dependencies = [ [[package]] name = "webxr" version = "0.0.1" -source = "git+https://github.com/servo/webxr#88f287d639710dbc1a41c83600d947911b78480d" +source = "git+https://github.com/servo/webxr#de60f3ebe01b1e829393c980a6126924b5f60075" dependencies = [ "android_injected_glue", "bindgen", @@ -6801,7 +6801,7 @@ dependencies = [ [[package]] name = "webxr-api" version = "0.0.1" -source = "git+https://github.com/servo/webxr#88f287d639710dbc1a41c83600d947911b78480d" +source = "git+https://github.com/servo/webxr#de60f3ebe01b1e829393c980a6126924b5f60075" dependencies = [ "euclid", "ipc-channel", diff --git a/components/config/prefs.rs b/components/config/prefs.rs index 6de159b91df..cab08d066da 100644 --- a/components/config/prefs.rs +++ b/components/config/prefs.rs @@ -272,6 +272,8 @@ mod gen { left_right: bool, #[serde(rename = "dom.webxr.glwindow.red-cyan")] red_cyan: bool, + spherical: bool, + cubemap: bool, }, hands: { #[serde(default)] diff --git a/components/script/dom/xrviewerpose.rs b/components/script/dom/xrviewerpose.rs index d88eb7ec9c9..3d11185c809 100644 --- a/components/script/dom/xrviewerpose.rs +++ b/components/script/dom/xrviewerpose.rs @@ -105,6 +105,49 @@ impl XRViewerPose { &to_base, )); }, + Views::Cubemap(front, left, right, top, bottom, back) => { + views.push(XRView::new( + global, + session, + &front, + XREye::None, + 0, + &to_base, + )); + views.push(XRView::new( + global, + session, + &left, + XREye::None, + 1, + &to_base, + )); + views.push(XRView::new( + global, + session, + &right, + XREye::None, + 2, + &to_base, + )); + views.push(XRView::new(global, session, &top, XREye::None, 3, &to_base)); + views.push(XRView::new( + global, + session, + &bottom, + XREye::None, + 4, + &to_base, + )); + views.push(XRView::new( + global, + session, + &back, + XREye::None, + 5, + &to_base, + )); + }, }; let transform: RigidTransform3D = to_base.pre_transform(&viewer_pose.transform); diff --git a/ports/winit/headed_window.rs b/ports/winit/headed_window.rs index 4d306a79ad8..55d58e569f8 100644 --- a/ports/winit/headed_window.rs +++ b/ports/winit/headed_window.rs @@ -684,6 +684,10 @@ impl webxr::glwindow::GlWindow for XRWindow { webxr::glwindow::GlWindowMode::StereoRedCyan } else if pref!(dom.webxr.glwindow.left_right) { webxr::glwindow::GlWindowMode::StereoLeftRight + } else if pref!(dom.webxr.glwindow.spherical) { + webxr::glwindow::GlWindowMode::Spherical + } else if pref!(dom.webxr.glwindow.cubemap) { + webxr::glwindow::GlWindowMode::Cubemap } else { webxr::glwindow::GlWindowMode::Blit } diff --git a/resources/prefs.json b/resources/prefs.json index f70a277df06..364e25c5682 100644 --- a/resources/prefs.json +++ b/resources/prefs.json @@ -34,9 +34,11 @@ "dom.webvr.test": false, "dom.webvtt.enabled": false, "dom.webxr.enabled": true, + "dom.webxr.glwindow.cubemap": false, "dom.webxr.glwindow.enabled": true, "dom.webxr.glwindow.left-right": false, "dom.webxr.glwindow.red-cyan": false, + "dom.webxr.glwindow.spherical": false, "dom.webxr.hands.enabled": false, "dom.webxr.layers.enabled": false, "dom.webxr.test": false,