mirror of
https://github.com/servo/servo.git
synced 2025-08-02 12:10:29 +01:00
Auto merge of #27224 - asajeffrey:webxr-glwindow-spherical, r=Manishearth
Add support for webxr cubemap and spherical 360 rendering <!-- Please describe your changes on the following line: --> Part of rendering webxr content as 360 video --- <!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: --> - [x] `./mach build -d` does not report any errors - [x] `./mach test-tidy` does not report any errors - [x] These changes do not require tests because it's back-end rendering <!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.--> <!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
This commit is contained in:
commit
714acb942c
5 changed files with 53 additions and 2 deletions
4
Cargo.lock
generated
4
Cargo.lock
generated
|
@ -6778,7 +6778,7 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "webxr"
|
name = "webxr"
|
||||||
version = "0.0.1"
|
version = "0.0.1"
|
||||||
source = "git+https://github.com/servo/webxr#88f287d639710dbc1a41c83600d947911b78480d"
|
source = "git+https://github.com/servo/webxr#de60f3ebe01b1e829393c980a6126924b5f60075"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"android_injected_glue",
|
"android_injected_glue",
|
||||||
"bindgen",
|
"bindgen",
|
||||||
|
@ -6801,7 +6801,7 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "webxr-api"
|
name = "webxr-api"
|
||||||
version = "0.0.1"
|
version = "0.0.1"
|
||||||
source = "git+https://github.com/servo/webxr#88f287d639710dbc1a41c83600d947911b78480d"
|
source = "git+https://github.com/servo/webxr#de60f3ebe01b1e829393c980a6126924b5f60075"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"euclid",
|
"euclid",
|
||||||
"ipc-channel",
|
"ipc-channel",
|
||||||
|
|
|
@ -272,6 +272,8 @@ mod gen {
|
||||||
left_right: bool,
|
left_right: bool,
|
||||||
#[serde(rename = "dom.webxr.glwindow.red-cyan")]
|
#[serde(rename = "dom.webxr.glwindow.red-cyan")]
|
||||||
red_cyan: bool,
|
red_cyan: bool,
|
||||||
|
spherical: bool,
|
||||||
|
cubemap: bool,
|
||||||
},
|
},
|
||||||
hands: {
|
hands: {
|
||||||
#[serde(default)]
|
#[serde(default)]
|
||||||
|
|
|
@ -105,6 +105,49 @@ impl XRViewerPose {
|
||||||
&to_base,
|
&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<f32, Viewer, BaseSpace> =
|
let transform: RigidTransform3D<f32, Viewer, BaseSpace> =
|
||||||
to_base.pre_transform(&viewer_pose.transform);
|
to_base.pre_transform(&viewer_pose.transform);
|
||||||
|
|
|
@ -684,6 +684,10 @@ impl webxr::glwindow::GlWindow for XRWindow {
|
||||||
webxr::glwindow::GlWindowMode::StereoRedCyan
|
webxr::glwindow::GlWindowMode::StereoRedCyan
|
||||||
} else if pref!(dom.webxr.glwindow.left_right) {
|
} else if pref!(dom.webxr.glwindow.left_right) {
|
||||||
webxr::glwindow::GlWindowMode::StereoLeftRight
|
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 {
|
} else {
|
||||||
webxr::glwindow::GlWindowMode::Blit
|
webxr::glwindow::GlWindowMode::Blit
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,9 +34,11 @@
|
||||||
"dom.webvr.test": false,
|
"dom.webvr.test": false,
|
||||||
"dom.webvtt.enabled": false,
|
"dom.webvtt.enabled": false,
|
||||||
"dom.webxr.enabled": true,
|
"dom.webxr.enabled": true,
|
||||||
|
"dom.webxr.glwindow.cubemap": false,
|
||||||
"dom.webxr.glwindow.enabled": true,
|
"dom.webxr.glwindow.enabled": true,
|
||||||
"dom.webxr.glwindow.left-right": false,
|
"dom.webxr.glwindow.left-right": false,
|
||||||
"dom.webxr.glwindow.red-cyan": false,
|
"dom.webxr.glwindow.red-cyan": false,
|
||||||
|
"dom.webxr.glwindow.spherical": false,
|
||||||
"dom.webxr.hands.enabled": false,
|
"dom.webxr.hands.enabled": false,
|
||||||
"dom.webxr.layers.enabled": false,
|
"dom.webxr.layers.enabled": false,
|
||||||
"dom.webxr.test": false,
|
"dom.webxr.test": false,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue