diff --git a/Cargo.lock b/Cargo.lock index b53fc32..05b0ccf 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4766,7 +4766,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a56d757972c98b346a9b766e3f02746cde6dd1cd1d1d563472929fdd74bec4d" dependencies = [ "anyhow", - "itertools 0.11.0", + "itertools 0.14.0", "proc-macro2", "quote", "syn 2.0.104", @@ -5448,7 +5448,7 @@ checksum = "6eae92052b72ef70dafa16eddbabffc77e5ca3574be2f7bc1127b36f0a7ad7f2" [[package]] name = "stardust-xr" version = "0.45.0" -source = "git+https://github.com/StardustXR/core.git?branch=dev#d61d268ae60a36f6a42af2cef95807187b6a5532" +source = "git+https://github.com/StardustXR/core.git?branch=dev#c03b8c09c2bc1096aedaf66025d47879729d6d10" dependencies = [ "color-eyre", "dirs", @@ -5467,7 +5467,7 @@ dependencies = [ [[package]] name = "stardust-xr-schemas" version = "1.5.3" -source = "git+https://github.com/StardustXR/core.git?branch=dev#d61d268ae60a36f6a42af2cef95807187b6a5532" +source = "git+https://github.com/StardustXR/core.git?branch=dev#c03b8c09c2bc1096aedaf66025d47879729d6d10" dependencies = [ "console-subscriber", "flatbuffers", diff --git a/src/core/color.rs b/src/core/color.rs index 98cd8c0..4131e30 100644 --- a/src/core/color.rs +++ b/src/core/color.rs @@ -3,10 +3,8 @@ use stardust_xr::values::color::{AlphaColor, Rgb, color_space::LinearRgb}; pub trait ColorConvert { fn to_bevy(&self) -> bevy::color::Color; } -// even tho its supposed to be linear the values have to be interpreted as Srgba to produce the -// correct result because StereoKit used Srgba while it was assumed that is uses linear rgba impl ColorConvert for AlphaColor> { fn to_bevy(&self) -> bevy::color::Color { - bevy::color::Color::srgba(self.c.r, self.c.g, self.c.b, self.a) + bevy::color::Color::linear_rgba(self.c.r, self.c.g, self.c.b, self.a) } } diff --git a/src/nodes/drawable/lines.rs b/src/nodes/drawable/lines.rs index 6bc4bfe..19d1410 100644 --- a/src/nodes/drawable/lines.rs +++ b/src/nodes/drawable/lines.rs @@ -182,7 +182,7 @@ fn build_line_mesh( let points = normals.map(|v| (v * curr.thickness) + Vec3::from(curr.point)); vertex_normals.extend(normals); vertex_positions.extend(points); - vertex_colors.extend([curr.color.to_bevy().to_srgba().to_f32_array(); 8]); + vertex_colors.extend([curr.color.to_bevy().to_linear().to_f32_array(); 8]); // Only connect vertices between segments if this isn't the end point if !last_point { vertex_indices.extend(indices(indices_set)); @@ -220,9 +220,8 @@ fn build_line_mesh( base: BevyMaterial { base_color: Color::WHITE, perceptual_roughness: 1.0, - // TODO: this should be Blend - alpha_mode: AlphaMode::Blend, - emissive: Color::srgba_u8(128 / 4, 128 / 4, 128 / 4, 255).into(), + alpha_mode: AlphaMode::Premultiplied, + emissive: Color::linear_rgba(0.25, 0.25, 0.25, 1.0).into(), ..default() }, extension: LineExtension { unused: 0 }, diff --git a/src/nodes/drawable/text.rs b/src/nodes/drawable/text.rs index 579d43d..6fc0852 100644 --- a/src/nodes/drawable/text.rs +++ b/src/nodes/drawable/text.rs @@ -107,8 +107,7 @@ fn spawn_text( emissive: Color::WHITE.to_linear(), metallic: 0.0, perceptual_roughness: 1.0, - // If alpha is supported on text we need to change this - alpha_mode: AlphaMode::Opaque, + alpha_mode: AlphaMode::Premultiplied, double_sided: false, ..default() },