diff --git a/crates/bevy_openxr/examples/overlay.rs b/crates/bevy_openxr/examples/overlay.rs index 263e902..15cab25 100644 --- a/crates/bevy_openxr/examples/overlay.rs +++ b/crates/bevy_openxr/examples/overlay.rs @@ -2,8 +2,11 @@ use bevy::prelude::*; use bevy_mod_openxr::{ - add_xr_plugins, features::overlay::OxrOverlaySessionEvent, init::OxrInitPlugin, - resources::OxrSessionConfig, types::OxrExtensions, + add_xr_plugins, + features::overlay::{OxrOverlaySessionEvent, OxrOverlaySettings}, + init::OxrInitPlugin, + resources::OxrSessionConfig, + types::OxrExtensions, }; use openxr::EnvironmentBlendMode; @@ -18,6 +21,10 @@ fn main() { }, ..OxrInitPlugin::default() })) + .insert_resource(OxrOverlaySettings { + session_layer_placement: 300, + ..Default::default() + }) .insert_resource(OxrSessionConfig { blend_mode_preference: { vec![ @@ -82,7 +89,11 @@ fn setup( // cube commands.spawn(( Mesh3d(meshes.add(Cuboid::new(1.0, 1.0, 1.0))), - MeshMaterial3d(materials.add(Color::srgb_u8(124, 144, 255))), + MeshMaterial3d(materials.add(StandardMaterial { + base_color: Color::srgba_u8(124, 144, 255, 127), + alpha_mode: AlphaMode::Blend, + ..Default::default() + })), Transform::from_xyz(0.0, 2.5, 0.0), )); // light diff --git a/crates/bevy_openxr/src/openxr/layer_builder.rs b/crates/bevy_openxr/src/openxr/layer_builder.rs index b3bc9be..2b883db 100644 --- a/crates/bevy_openxr/src/openxr/layer_builder.rs +++ b/crates/bevy_openxr/src/openxr/layer_builder.rs @@ -36,7 +36,10 @@ impl LayerProvider for ProjectionLayer { Some(Box::new( CompositionLayerProjection::new() - .layer_flags(CompositionLayerFlags::BLEND_TEXTURE_SOURCE_ALPHA) + .layer_flags( + CompositionLayerFlags::BLEND_TEXTURE_SOURCE_ALPHA + | CompositionLayerFlags::UNPREMULTIPLIED_ALPHA, + ) .space(stage) .views(&[ CompositionLayerProjectionView::new() @@ -171,7 +174,7 @@ impl Default for CompositionLayerProjectionView<'_> { } } /// # Safety -/// the header function must return a ref to a valid Composition Layer struct. +/// the header function must return a ref to a valid Composition Layer struct. /// it has to use `repr(C)` and it has to follow the shape of a Composition Layer struct from the /// OpenXR specification pub unsafe trait CompositionLayer<'a> {