diff --git a/src/backend/openxr/mod.rs b/src/backend/openxr/mod.rs index 9f65cf0c..edb45377 100644 --- a/src/backend/openxr/mod.rs +++ b/src/backend/openxr/mod.rs @@ -217,20 +217,25 @@ pub fn openxr_run(running: Arc) -> Result<(), BackendError> { o.render(&mut app_state); + let dist_sq = (app_state.input_state.hmd.translation - o.state.transform.translation) + .length_squared(); + if let Some(quad) = o.present_xr(&xr_state, &mut command_buffer) { - layers.push(quad); + layers.push((dist_sq, quad)); }; } for quad in lines.present_xr(&xr_state, &mut command_buffer) { - layers.push(quad); + layers.push((0.0, quad)); } command_buffer.build_and_execute_now(); + layers.sort_by(|a, b| b.0.partial_cmp(&a.0).unwrap()); + let frame_ref = layers .iter() - .map(|f| f as &xr::CompositionLayerBase) + .map(|f| &f.1 as &xr::CompositionLayerBase) .collect::>(); frame_stream diff --git a/src/backend/openxr/overlay.rs b/src/backend/openxr/overlay.rs index 20d962d3..fcd0c73d 100644 --- a/src/backend/openxr/overlay.rs +++ b/src/backend/openxr/overlay.rs @@ -6,7 +6,6 @@ use super::{swapchain::SwapchainRenderData, transform_to_posef, XrState}; use crate::{ backend::{openxr::swapchain::create_swapchain_render_data, overlay::OverlayData}, graphics::WlxCommandBuffer, - state::AppState, }; use vulkano::image::view::ImageView;