fix: fix alpha blending, suboptimal since it doesn't support prelutiplied alpha but its fine for now

Signed-off-by: Schmarni <marnistromer@gmail.com>
This commit is contained in:
Schmarni
2025-08-13 00:18:08 +02:00
committed by Schmarni
parent 65cfa920c9
commit a988d73187
2 changed files with 19 additions and 5 deletions

View File

@@ -2,8 +2,11 @@
use bevy::prelude::*; use bevy::prelude::*;
use bevy_mod_openxr::{ use bevy_mod_openxr::{
add_xr_plugins, features::overlay::OxrOverlaySessionEvent, init::OxrInitPlugin, add_xr_plugins,
resources::OxrSessionConfig, types::OxrExtensions, features::overlay::{OxrOverlaySessionEvent, OxrOverlaySettings},
init::OxrInitPlugin,
resources::OxrSessionConfig,
types::OxrExtensions,
}; };
use openxr::EnvironmentBlendMode; use openxr::EnvironmentBlendMode;
@@ -18,6 +21,10 @@ fn main() {
}, },
..OxrInitPlugin::default() ..OxrInitPlugin::default()
})) }))
.insert_resource(OxrOverlaySettings {
session_layer_placement: 300,
..Default::default()
})
.insert_resource(OxrSessionConfig { .insert_resource(OxrSessionConfig {
blend_mode_preference: { blend_mode_preference: {
vec![ vec![
@@ -82,7 +89,11 @@ fn setup(
// cube // cube
commands.spawn(( commands.spawn((
Mesh3d(meshes.add(Cuboid::new(1.0, 1.0, 1.0))), 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), Transform::from_xyz(0.0, 2.5, 0.0),
)); ));
// light // light

View File

@@ -36,7 +36,10 @@ impl LayerProvider for ProjectionLayer {
Some(Box::new( Some(Box::new(
CompositionLayerProjection::new() CompositionLayerProjection::new()
.layer_flags(CompositionLayerFlags::BLEND_TEXTURE_SOURCE_ALPHA) .layer_flags(
CompositionLayerFlags::BLEND_TEXTURE_SOURCE_ALPHA
| CompositionLayerFlags::UNPREMULTIPLIED_ALPHA,
)
.space(stage) .space(stage)
.views(&[ .views(&[
CompositionLayerProjectionView::new() CompositionLayerProjectionView::new()