mirror of
https://github.com/servo/servo.git
synced 2025-07-22 23:03:42 +01:00
Add support for webxr cubemap and spherical 360 rendering
This commit is contained in:
parent
352ecda7b5
commit
a2142d7dbd
5 changed files with 53 additions and 2 deletions
4
Cargo.lock
generated
4
Cargo.lock
generated
|
@ -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",
|
||||
|
|
|
@ -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)]
|
||||
|
|
|
@ -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<f32, Viewer, BaseSpace> =
|
||||
to_base.pre_transform(&viewer_pose.transform);
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue