From b467f838a2064166eb1c713f792c00cf13db637c Mon Sep 17 00:00:00 2001 From: Charlotte McElwain Date: Mon, 9 Sep 2024 12:58:01 -0700 Subject: [PATCH 1/7] Introduce ShaderModel. --- Cargo.lock | 12 + Cargo.toml | 1 + bevy_nannou_derive/Cargo.toml | 16 + bevy_nannou_derive/src/lib.rs | 75 ++++ .../tests/shader_model_tests.rs | 60 ++++ bevy_nannou_draw/src/draw/drawing.rs | 45 --- bevy_nannou_draw/src/draw/indirect.rs | 329 ++++++++++++++++++ bevy_nannou_draw/src/lib.rs | 2 - bevy_nannou_draw/src/render.rs | 213 ++++-------- examples/Cargo.toml | 4 - examples/draw/draw_custom_material.rs | 14 +- examples/draw/draw_fragment_shader.rs | 29 -- examples/video/video_material.rs | 17 +- nannou/Cargo.toml | 2 +- nannou/src/app.rs | 15 +- nannou/src/lib.rs | 2 - nannou/src/prelude.rs | 1 + 17 files changed, 570 insertions(+), 267 deletions(-) create mode 100644 bevy_nannou_derive/Cargo.toml create mode 100644 bevy_nannou_derive/src/lib.rs create mode 100644 bevy_nannou_derive/tests/shader_model_tests.rs create mode 100644 bevy_nannou_draw/src/draw/indirect.rs delete mode 100644 examples/draw/draw_fragment_shader.rs diff --git a/Cargo.lock b/Cargo.lock index 7d724904f..5f727d417 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1397,6 +1397,17 @@ dependencies = [ "bevy_nannou_video", ] +[[package]] +name = "bevy_nannou_derive" +version = "0.1.0" +dependencies = [ + "bevy 0.15.0-dev", + "bevy_nannou_draw", + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 1.0.109", +] + [[package]] name = "bevy_nannou_draw" version = "0.1.0" @@ -5359,6 +5370,7 @@ dependencies = [ "bevy_common_assets", "bevy_egui 0.29.0 (git+https://github.com/tychedelia/bevy_egui?branch=main)", "bevy_nannou", + "bevy_nannou_derive", "find_folder", "futures 0.3.30", "getrandom 0.2.15", diff --git a/Cargo.toml b/Cargo.toml index 0f526d9ff..280303fd8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,7 @@ [workspace] members = [ "bevy_nannou", + "bevy_nannou_derive", "bevy_nannou_draw", "bevy_nannou_isf", "bevy_nannou_video", diff --git a/bevy_nannou_derive/Cargo.toml b/bevy_nannou_derive/Cargo.toml new file mode 100644 index 000000000..ade9c3685 --- /dev/null +++ b/bevy_nannou_derive/Cargo.toml @@ -0,0 +1,16 @@ +[package] +name = "bevy_nannou_derive" +version = "0.1.0" +edition = "2021" + +[lib] +proc-macro = true + +[dependencies] +syn = { version = "1", features = ["full"] } +quote = "1.0" +proc-macro2 = "1.0" + +[dev-dependencies] +bevy = { workspace = true } +bevy_nannou_draw = { path = "../bevy_nannou_draw" } \ No newline at end of file diff --git a/bevy_nannou_derive/src/lib.rs b/bevy_nannou_derive/src/lib.rs new file mode 100644 index 000000000..c45305c95 --- /dev/null +++ b/bevy_nannou_derive/src/lib.rs @@ -0,0 +1,75 @@ +use proc_macro::TokenStream; +use quote::{quote, ToTokens}; +use syn::{parse_macro_input, parse_quote, Attribute, ItemStruct, Lit, Meta, NestedMeta}; + +#[proc_macro_attribute] +pub fn shader_model(attr: TokenStream, item: TokenStream) -> TokenStream { + let mut input = parse_macro_input!(item as ItemStruct); + let attrs = parse_macro_input!(attr as syn::AttributeArgs); + + let (vertex_shader, fragment_shader) = parse_shader_attributes(&attrs); + + let name = &input.ident; + let generics = &input.generics; + let (impl_generics, ty_generics, where_clause) = generics.split_for_impl(); + + let vertex_shader_impl = vertex_shader + .map(|path| quote! { #path.into() }) + .unwrap_or_else(|| quote! { ::nannou::prelude::ShaderRef::Default }); + + let fragment_shader_impl = fragment_shader + .map(|path| quote! { #path.into() }) + .unwrap_or_else(|| quote! { ::nannou::prelude::ShaderRef::Default }); + + // Add derive attributes + input + .attrs + .push(parse_quote!(#[derive(Asset, TypePath, AsBindGroup, Debug, Clone, Default)])); + + let expanded = quote! { + #input + + impl #impl_generics ::nannou::prelude::render::ShaderModel for #name #ty_generics #where_clause { + fn vertex_shader() -> ::nannou::prelude::ShaderRef { + #vertex_shader_impl + } + + fn fragment_shader() -> ::nannou::prelude::ShaderRef { + #fragment_shader_impl + } + } + + impl #impl_generics ::nannou::prelude::Material for #name #ty_generics #where_clause { + fn vertex_shader() -> ::nannou::prelude::ShaderRef { + ::vertex_shader() + } + + fn fragment_shader() -> ::nannou::prelude::ShaderRef { + ::fragment_shader() + } + } + }; + + TokenStream::from(expanded) +} + +fn parse_shader_attributes(attrs: &[syn::NestedMeta]) -> (Option, Option) { + let mut vertex_shader = None; + let mut fragment_shader = None; + + for attr in attrs { + if let NestedMeta::Meta(Meta::NameValue(nv)) = attr { + if nv.path.is_ident("vertex") { + if let Lit::Str(lit) = &nv.lit { + vertex_shader = Some(lit.value()); + } + } else if nv.path.is_ident("fragment") { + if let Lit::Str(lit) = &nv.lit { + fragment_shader = Some(lit.value()); + } + } + } + } + + (vertex_shader, fragment_shader) +} diff --git a/bevy_nannou_derive/tests/shader_model_tests.rs b/bevy_nannou_derive/tests/shader_model_tests.rs new file mode 100644 index 000000000..3897e626f --- /dev/null +++ b/bevy_nannou_derive/tests/shader_model_tests.rs @@ -0,0 +1,60 @@ +use bevy::render::render_resource::ShaderRef; +use bevy_nannou_derive::shader_model; +use bevy_nannou_draw::render::ShaderModel; + +#[shader_model] +struct TestMaterial {} + +#[test] +fn test_default_shaders() { + assert!(matches!(TestMaterial::vertex_shader(), ShaderRef::Default)); + assert!(matches!( + TestMaterial::fragment_shader(), + ShaderRef::Default + )); +} + +#[shader_model(vertex = "custom_vertex.wgsl")] +struct TestVertexMaterial {} + +#[test] +fn test_custom_vertex_shader() { + assert!(matches!( + TestVertexMaterial::vertex_shader(), + ShaderRef::Path(_) + )); + assert!(matches!( + TestVertexMaterial::fragment_shader(), + ShaderRef::Default + )); +} + +#[shader_model(fragment = "custom_fragment.wgsl")] +struct TestFragmentMaterial {} + +#[test] +fn test_custom_fragment_shader() { + assert!(matches!( + TestFragmentMaterial::vertex_shader(), + ShaderRef::Default + )); + assert!(matches!( + TestFragmentMaterial::fragment_shader(), + ShaderRef::Path(_) + )); +} + +#[shader_model(vertex = "custom_vertex.wgsl", fragment = "custom_fragment.wgsl")] +struct TestBothMaterial {} + +#[test] +fn test_both_custom_shaders() { + assert!(matches!( + TestBothMaterial::vertex_shader(), + ShaderRef::Path(_) + )); + assert!(matches!( + TestBothMaterial::fragment_shader(), + ShaderRef::Path(_) + )); +} diff --git a/bevy_nannou_draw/src/draw/drawing.rs b/bevy_nannou_draw/src/draw/drawing.rs index 1dc77e877..8f781d8e0 100644 --- a/bevy_nannou_draw/src/draw/drawing.rs +++ b/bevy_nannou_draw/src/draw/drawing.rs @@ -140,51 +140,6 @@ where self.finish_inner() } - /// Set the material's fragment shader for the drawing. Note: this shader must have - /// been initialized during application setup. - #[cfg(feature = "nightly")] - pub fn fragment_shader( - mut self, - ) -> Drawing<'a, T, ExtendedNannouMaterial<"", FS>> { - self.finish_on_drop = false; - - let Drawing { - ref draw, - index, - material_index, - .. - } = self; - - let state = draw.state.clone(); - let new_id = UntypedAssetId::Uuid { - type_id: TypeId::of::>(), - uuid: Uuid::new_v4(), - }; - - let material: ExtendedNannouMaterial<"", FS> = Default::default(); - let mut state = state.write().unwrap(); - state.materials.insert(new_id.clone(), Box::new(material)); - // Mark the last material as the new material so that further drawings use the same material - // as the parent draw ref. - state.last_material = Some(new_id.clone()); - - let draw = Draw { - state: draw.state.clone(), - context: draw.context.clone(), - material: new_id.clone(), - window: draw.window, - _material: Default::default(), - }; - - Drawing::<'a, T, ExtendedMaterial>> { - draw: DrawRef::Owned(draw), - index, - material_index, - finish_on_drop: true, - _ty: PhantomData, - } - } - // Map the the parent's material to a new material type, taking ownership over the // draw instance clone. pub fn map_material(mut self, map: F) -> Drawing<'a, T, M> diff --git a/bevy_nannou_draw/src/draw/indirect.rs b/bevy_nannou_draw/src/draw/indirect.rs new file mode 100644 index 000000000..682eb9316 --- /dev/null +++ b/bevy_nannou_draw/src/draw/indirect.rs @@ -0,0 +1,329 @@ +//! A shader that renders a mesh multiple times in one draw call. + +use crate::draw::drawing::Drawing; +use crate::draw::primitive::Primitive; +use crate::draw::{Draw, DrawCommand}; +use bevy::core_pipeline::core_3d::Opaque3dBinKey; +use bevy::pbr::{MaterialPipeline, MaterialPipelineKey, PreparedMaterial, SetMaterialBindGroup}; +use bevy::render::mesh::allocator::MeshAllocator; +use bevy::render::mesh::RenderMeshBufferInfo; +use bevy::render::render_asset::prepare_assets; +use bevy::render::render_phase::{BinnedRenderPhaseType, ViewBinnedRenderPhases}; +use bevy::{ + core_pipeline::core_3d::Opaque3d, + ecs::system::{lifetimeless::*, SystemParamItem}, + pbr::{ + MeshPipeline, MeshPipelineKey, RenderMeshInstances, SetMeshBindGroup, SetMeshViewBindGroup, + }, + prelude::*, + render::{ + extract_component::ExtractComponent, + mesh::{MeshVertexBufferLayoutRef, RenderMesh}, + render_asset::RenderAssets, + render_phase::{ + AddRenderCommand, DrawFunctions, PhaseItem, PhaseItemExtraIndex, RenderCommand, + RenderCommandResult, SetItemPipeline, TrackedRenderPass, + }, + render_resource::*, + renderer::RenderDevice, + view::ExtractedView, + Render, RenderApp, RenderSet, + }, +}; +use rayon::prelude::*; +use std::hash::Hash; +use std::marker::PhantomData; +use std::ops::Range; +use bevy::render::storage::ShaderStorageBuffer; + +pub struct Indirect<'a, M> +where + M: Material + Default, +{ + draw: &'a Draw, + data: Option<(usize, Handle)>, +} + +impl<'a, M> Drop for Indirect<'a, M> +where + M: Material + Default, +{ + fn drop(&mut self) { + if let Some((index, data)) = self.data.take() { + self.insert_indirect_draw_command(index, data); + } + } +} + +pub fn new(draw: &Draw) -> Indirect +where + M: Material + Default, +{ + Indirect { draw, data: None } +} + +impl<'a, M> Indirect<'a, M> +where + M: Material + Default, +{ + pub fn with(mut self, drawing: Drawing, indirect_buffer: Handle) -> Indirect<'a, M> + where + T: Into, + { + self.draw + .state + .write() + .unwrap() + .ignored_drawings + .insert(drawing.index); + self.data = Some((drawing.index, indirect_buffer)); + self + } + + fn insert_indirect_draw_command(&self, index: usize, indirect_buffer: Handle) { + let mut state = self.draw.state.write().unwrap(); + let primitive = state.drawing.remove(&index).unwrap(); + state + .draw_commands + .push(Some(DrawCommand::Indirect(primitive, indirect_buffer))); + } +} + +#[derive(Component)] +pub struct IndirectEntity; + +pub struct IndirectMaterialPlugin(PhantomData); + +impl Default for IndirectMaterialPlugin +where + M: Default, +{ + fn default() -> Self { + IndirectMaterialPlugin(PhantomData) + } +} + +impl Plugin for IndirectMaterialPlugin +where + M: Material + Default, + M::Data: PartialEq + Eq + Hash + Clone, +{ + fn build(&self, app: &mut App) { + app.sub_app_mut(RenderApp) + .add_render_command::>() + .init_resource::>>() + .add_systems( + Render, + (queue_indirect:: + .after(prepare_assets::>) + .in_set(RenderSet::QueueMeshes)), + ); + } + + fn finish(&self, app: &mut App) { + app.sub_app_mut(RenderApp) + .init_resource::>(); + } +} + +#[allow(clippy::too_many_arguments)] +fn queue_indirect( + draw_functions: Res>, + custom_pipeline: Res>, + mut pipelines: ResMut>>, + pipeline_cache: Res, + meshes: Res>, + (render_mesh_instances, material_meshes, mut phases, mut views, materials): ( + Res, + Query<(Entity, &Handle), With>, + ResMut>, + Query<(Entity, &ExtractedView, &Msaa)>, + Res>>, + ), +) where + M: Material, + M::Data: PartialEq + Eq + Hash + Clone, +{ + let drawn_function = draw_functions.read().id::>(); + + for (view_entity, view, msaa) in &mut views { + let msaa_key = MeshPipelineKey::from_msaa_samples(msaa.samples()); + let Some(phase) = phases.get_mut(&view_entity) else { + continue; + }; + + let view_key = msaa_key | MeshPipelineKey::from_hdr(view.hdr); + for (entity, material) in &material_meshes { + let material = materials.get(material).unwrap(); + let Some(mesh_instance) = render_mesh_instances.render_mesh_queue_data(entity) else { + continue; + }; + let Some(mesh) = meshes.get(mesh_instance.mesh_asset_id) else { + continue; + }; + let mesh_key = + view_key | MeshPipelineKey::from_primitive_topology(mesh.primitive_topology()); + let key = MaterialPipelineKey { + mesh_key, + bind_group_data: material.key.clone(), + }; + let pipeline = pipelines + .specialize(&pipeline_cache, &custom_pipeline, key, &mesh.layout) + .unwrap(); + info!("Queueing indirect mesh {:?}", entity); + phase.add( + Opaque3dBinKey { + draw_function: drawn_function, + pipeline, + asset_id: AssetId::::invalid().untyped(), + material_bind_group_id: None, + lightmap_image: None, + }, + entity, + BinnedRenderPhaseType::NonMesh, + ); + } + } +} + +#[derive(Component)] +pub(crate) struct InstanceRange(pub Range); + +#[derive(Resource)] +struct IndirectDataPipeline { + mesh_pipeline: MeshPipeline, + material_layout: BindGroupLayout, + vertex_shader: Option>, + fragment_shader: Option>, + marker: PhantomData, +} + +impl FromWorld for IndirectDataPipeline { + fn from_world(world: &mut World) -> Self { + let asset_server = world.resource::(); + let render_device = world.resource::(); + + IndirectDataPipeline { + mesh_pipeline: world.resource::().clone(), + material_layout: M::bind_group_layout(render_device), + vertex_shader: match M::vertex_shader() { + ShaderRef::Default => None, + ShaderRef::Handle(handle) => Some(handle), + ShaderRef::Path(path) => Some(asset_server.load(path)), + }, + fragment_shader: match M::fragment_shader() { + ShaderRef::Default => None, + ShaderRef::Handle(handle) => Some(handle), + ShaderRef::Path(path) => Some(asset_server.load(path)), + }, + marker: PhantomData, + } + } +} + +impl SpecializedMeshPipeline for IndirectDataPipeline +where + M::Data: PartialEq + Eq + Hash + Clone, +{ + type Key = MaterialPipelineKey; + + fn specialize( + &self, + key: Self::Key, + layout: &MeshVertexBufferLayoutRef, + ) -> Result { + let mut descriptor = self.mesh_pipeline.specialize(key.mesh_key, layout)?; + if let Some(vertex_shader) = &self.vertex_shader { + descriptor.vertex.shader = vertex_shader.clone(); + } + + if let Some(fragment_shader) = &self.fragment_shader { + descriptor.fragment.as_mut().unwrap().shader = fragment_shader.clone(); + } + + descriptor.layout.insert(2, self.material_layout.clone()); + + let pipeline = MaterialPipeline { + mesh_pipeline: self.mesh_pipeline.clone(), + material_layout: self.material_layout.clone(), + vertex_shader: self.vertex_shader.clone(), + fragment_shader: self.fragment_shader.clone(), + marker: Default::default(), + }; + M::specialize(&pipeline, &mut descriptor, layout, key)?; + Ok(descriptor) + } +} + +type DrawIndirectMaterial = ( + SetItemPipeline, + SetMeshViewBindGroup<0>, + SetMeshBindGroup<1>, + SetMaterialBindGroup, + DrawMeshIndirect, +); + +struct DrawMeshIndirect; + +impl RenderCommand

for DrawMeshIndirect { + type Param = ( + SRes>, + SRes, + SRes, + ); + type ViewQuery = (); + type ItemQuery = Read; + + #[inline] + fn render<'w>( + item: &P, + _view: (), + instance_range: Option<&'w InstanceRange>, + (meshes, render_mesh_instances, mesh_allocator): SystemParamItem<'w, '_, Self::Param>, + pass: &mut TrackedRenderPass<'w>, + ) -> RenderCommandResult { + let mesh_allocator = mesh_allocator.into_inner(); + + let Some(mesh_instance) = render_mesh_instances.render_mesh_queue_data(item.entity()) + else { + return RenderCommandResult::Skip; + }; + let Some(gpu_mesh) = meshes.into_inner().get(mesh_instance.mesh_asset_id) else { + return RenderCommandResult::Skip; + }; + let Some(instance_range) = instance_range else { + return RenderCommandResult::Skip; + }; + let Some(vertex_buffer_slice) = + mesh_allocator.mesh_vertex_slice(&mesh_instance.mesh_asset_id) + else { + return RenderCommandResult::Skip; + }; + + pass.set_vertex_buffer(0, vertex_buffer_slice.buffer.slice(..)); + + match &gpu_mesh.buffer_info { + RenderMeshBufferInfo::Indexed { + index_format, + count, + } => { + let Some(index_buffer_slice) = + mesh_allocator.mesh_index_slice(&mesh_instance.mesh_asset_id) + else { + return RenderCommandResult::Skip; + }; + + pass.set_index_buffer(index_buffer_slice.buffer.slice(..), 0, *index_format); + pass.draw_indexed( + index_buffer_slice.range.start..(index_buffer_slice.range.start + count), + vertex_buffer_slice.range.start as i32, + instance_range.0.clone(), + ); + } + RenderMeshBufferInfo::NonIndexed => { + pass.draw(0..gpu_mesh.vertex_count, instance_range.0.clone()); + } + } + RenderCommandResult::Success + } +} diff --git a/bevy_nannou_draw/src/lib.rs b/bevy_nannou_draw/src/lib.rs index a6dabaa52..577ffeeee 100644 --- a/bevy_nannou_draw/src/lib.rs +++ b/bevy_nannou_draw/src/lib.rs @@ -1,5 +1,3 @@ -#![cfg_attr(feature = "nightly", feature(adt_const_params))] - use bevy::prelude::*; use crate::render::NannouRenderPlugin; diff --git a/bevy_nannou_draw/src/render.rs b/bevy_nannou_draw/src/render.rs index ebc5c40bf..5c43f26c7 100644 --- a/bevy_nannou_draw/src/render.rs +++ b/bevy_nannou_draw/src/render.rs @@ -2,22 +2,27 @@ use std::any::TypeId; use std::hash::Hash; use std::ops::{Deref, DerefMut}; +use bevy::asset::Asset; use bevy::asset::UntypedAssetId; -use bevy::pbr::MaterialExtension; +use bevy::pbr::{ + ExtendedMaterial, MaterialExtension, MaterialExtensionKey, MaterialExtensionPipeline, + StandardMaterial, +}; +use bevy::prelude::TypePath; use bevy::prelude::*; use bevy::render::camera::RenderTarget; use bevy::render::extract_component::{ExtractComponent, ExtractComponentPlugin}; use bevy::render::extract_resource::{ExtractResource, ExtractResourcePlugin}; +use bevy::render::mesh::MeshVertexBufferLayoutRef; use bevy::render::render_resource as wgpu; -use bevy::render::render_resource::{AsBindGroup, BlendState, PolygonMode}; +use bevy::render::render_resource::{ + AsBindGroup, BlendState, PolygonMode, RenderPipelineDescriptor, ShaderRef, + SpecializedMeshPipelineError, +}; use bevy::render::view::{NoFrustumCulling, RenderLayers}; use bevy::window::WindowRef; use lyon::lyon_tessellation::{FillTessellator, StrokeTessellator}; -#[cfg(feature = "nightly")] -pub use nightly::*; -#[cfg(not(feature = "nightly"))] -pub use stable::*; use crate::draw::instanced::InstancingPlugin; use crate::draw::mesh::MeshExt; @@ -25,6 +30,23 @@ use crate::draw::render::{RenderContext, RenderPrimitive}; use crate::draw::{DrawCommand, DrawContext}; use crate::DrawHolder; +pub trait ShaderModel: + Material + AsBindGroup + Clone + Default + Sized + Send + Sync + 'static +{ + /// Returns this material's vertex shader. If [`ShaderRef::Default`] is returned, the default mesh vertex shader + /// will be used. + fn vertex_shader() -> ShaderRef { + ShaderRef::Default + } + + /// Returns this material's fragment shader. If [`ShaderRef::Default`] is returned, the default mesh fragment shader + /// will be used. + #[allow(unused_variables)] + fn fragment_shader() -> ShaderRef { + ShaderRef::Default + } +} + pub struct NannouRenderPlugin; impl Plugin for NannouRenderPlugin { @@ -58,164 +80,53 @@ where // Components and Resources // ---------------------------------------------------------------------------- -#[cfg(feature = "nightly")] -mod nightly { - use bevy::asset::Asset; - use bevy::pbr::{ - ExtendedMaterial, MaterialExtension, MaterialExtensionKey, MaterialExtensionPipeline, - StandardMaterial, - }; - use bevy::prelude::TypePath; - use bevy::render::mesh::MeshVertexBufferLayoutRef; - use bevy::render::render_resource::{ - AsBindGroup, BlendState, PolygonMode, RenderPipelineDescriptor, ShaderRef, - SpecializedMeshPipelineError, - }; - - pub type DefaultNannouMaterial = ExtendedMaterial>; +pub type DefaultNannouMaterial = ExtendedMaterial; - pub type ExtendedNannouMaterial = - ExtendedMaterial>; - - #[derive(Asset, AsBindGroup, TypePath, Debug, Clone, Default)] - #[bind_group_data(NannouMaterialKey)] - pub struct NannouMaterial { - pub polygon_mode: PolygonMode, - pub blend: Option, - } +pub type ExtendedNannouMaterial = ExtendedMaterial; - #[derive(Eq, PartialEq, Hash, Clone)] - pub struct NannouMaterialKey { - polygon_mode: PolygonMode, - blend: Option, - } - - impl From<&NannouMaterial> - for NannouMaterialKey - { - fn from(material: &NannouMaterial) -> Self { - Self { - polygon_mode: material.polygon_mode, - blend: material.blend, - } - } - } - - impl MaterialExtension for NannouMaterial { - fn vertex_shader() -> ShaderRef { - if !VS.is_empty() { - VS.into() - } else { - ShaderRef::Default - } - } - - fn fragment_shader() -> ShaderRef { - if !FS.is_empty() { - FS.into() - } else { - ShaderRef::Default - } - } - - fn specialize( - _pipeline: &MaterialExtensionPipeline, - descriptor: &mut RenderPipelineDescriptor, - _layout: &MeshVertexBufferLayoutRef, - key: MaterialExtensionKey, - ) -> Result<(), SpecializedMeshPipelineError> { - if let Some(blend) = key.bind_group_data.blend { - let fragment = descriptor.fragment.as_mut().unwrap(); - fragment.targets.iter_mut().for_each(|target| { - if let Some(target) = target { - target.blend = Some(blend); - } - }); - } - - descriptor.primitive.polygon_mode = key.bind_group_data.polygon_mode; - Ok(()) - } - } +#[derive(Asset, AsBindGroup, TypePath, Debug, Clone, Default)] +#[bind_group_data(NannouMaterialKey)] +pub struct NannouMaterial { + pub polygon_mode: PolygonMode, + pub blend: Option, } -#[cfg(not(feature = "nightly"))] -mod stable { - use bevy::asset::Asset; - use bevy::pbr::{ - ExtendedMaterial, MaterialExtension, MaterialExtensionKey, MaterialExtensionPipeline, - StandardMaterial, - }; - use bevy::prelude::TypePath; - use bevy::render::mesh::MeshVertexBufferLayoutRef; - use bevy::render::render_resource::{ - AsBindGroup, BlendState, PolygonMode, RenderPipelineDescriptor, ShaderRef, - SpecializedMeshPipelineError, - }; - - pub type DefaultNannouMaterial = ExtendedMaterial; - - pub type ExtendedNannouMaterial = ExtendedMaterial; - - #[derive(Asset, AsBindGroup, TypePath, Debug, Clone, Default)] - #[bind_group_data(NannouMaterialKey)] - pub struct NannouMaterial { - pub polygon_mode: PolygonMode, - pub blend: Option, - } - - #[derive(Eq, PartialEq, Hash, Clone)] - pub struct NannouMaterialKey { - polygon_mode: PolygonMode, - blend: Option, - } +#[derive(Eq, PartialEq, Hash, Clone)] +pub struct NannouMaterialKey { + polygon_mode: PolygonMode, + blend: Option, +} - impl From<&NannouMaterial> for NannouMaterialKey { - fn from(material: &NannouMaterial) -> Self { - Self { - polygon_mode: material.polygon_mode, - blend: material.blend, - } +impl From<&NannouMaterial> for NannouMaterialKey { + fn from(material: &NannouMaterial) -> Self { + Self { + polygon_mode: material.polygon_mode, + blend: material.blend, } } +} - impl MaterialExtension for NannouMaterial { - fn specialize( - _pipeline: &MaterialExtensionPipeline, - descriptor: &mut RenderPipelineDescriptor, - _layout: &MeshVertexBufferLayoutRef, - key: MaterialExtensionKey, - ) -> Result<(), SpecializedMeshPipelineError> { - if let Some(blend) = key.bind_group_data.blend { - let fragment = descriptor.fragment.as_mut().unwrap(); - fragment.targets.iter_mut().for_each(|target| { - if let Some(target) = target { - target.blend = Some(blend); - } - }); - } - - descriptor.primitive.polygon_mode = key.bind_group_data.polygon_mode; - Ok(()) +impl MaterialExtension for NannouMaterial { + fn specialize( + _pipeline: &MaterialExtensionPipeline, + descriptor: &mut RenderPipelineDescriptor, + _layout: &MeshVertexBufferLayoutRef, + key: MaterialExtensionKey, + ) -> Result<(), SpecializedMeshPipelineError> { + if let Some(blend) = key.bind_group_data.blend { + let fragment = descriptor.fragment.as_mut().unwrap(); + fragment.targets.iter_mut().for_each(|target| { + if let Some(target) = target { + target.blend = Some(blend); + } + }); } - } - impl From<&NannouMaterial> for crate::render::NannouMaterialKey { - fn from(material: &NannouMaterial) -> Self { - Self { - polygon_mode: material.polygon_mode, - blend: material.blend, - } - } + descriptor.primitive.polygon_mode = key.bind_group_data.polygon_mode; + Ok(()) } } -#[derive(Eq, PartialEq, Hash, Clone)] -pub struct NannouMaterialKey { - polygon_mode: PolygonMode, - blend: Option, -} - #[derive(Resource, Deref, DerefMut, ExtractResource, Clone)] pub struct DefaultTextureHandle(Handle); diff --git a/examples/Cargo.toml b/examples/Cargo.toml index 0a8ba9c44..bd5af915c 100644 --- a/examples/Cargo.toml +++ b/examples/Cargo.toml @@ -81,10 +81,6 @@ name = "draw_custom_material" path = "draw/draw_custom_material.rs" required-features = ["nannou/hot_reload"] [[example]] -name = "draw_fragment_shader" -path = "draw/draw_fragment_shader.rs" -required-features = ["nannou/nightly", "nannou/hot_reload"] -[[example]] name = "draw_loop" path = "draw/draw_loop.rs" [[example]] diff --git a/examples/draw/draw_custom_material.rs b/examples/draw/draw_custom_material.rs index 350b98111..de9ccb76c 100644 --- a/examples/draw/draw_custom_material.rs +++ b/examples/draw/draw_custom_material.rs @@ -4,25 +4,19 @@ fn main() { nannou::app(model) .simple_window(view) // Register our custom material to make it available for use in our drawing - .init_custom_material::() + .shader_model::() .run() } struct Model {} // This struct defines the data that will be passed to your shader -#[derive(Asset, TypePath, AsBindGroup, Debug, Clone, Default)] -struct CustomMaterial { +#[shader_model(fragment = "draw_custom_material.wgsl")] +struct ShaderModel { #[uniform(0)] color: LinearRgba, } -impl Material for CustomMaterial { - fn fragment_shader() -> ShaderRef { - "draw_custom_material.wgsl".into() - } -} - fn model(app: &App) -> Model { Model {} } @@ -32,7 +26,7 @@ fn view(app: &App, model: &Model, window: Entity) { let draw = app .draw() // Initialize our draw instance with our custom material - .material(CustomMaterial { color: RED.into() }); + .material(ShaderModel { color: RED.into() }); draw.ellipse().x(-200.0); diff --git a/examples/draw/draw_fragment_shader.rs b/examples/draw/draw_fragment_shader.rs deleted file mode 100644 index 09568b870..000000000 --- a/examples/draw/draw_fragment_shader.rs +++ /dev/null @@ -1,29 +0,0 @@ -use nannou::prelude::*; - -fn main() { - nannou::app(model) - .simple_window(view) - // We need to initialize the fragment shader with the path to the shader file - // in our assets directory so that it will be available to use as a material. - .init_fragment_shader::<"draw_fragment_shader.wgsl">() - .run() -} - -struct Model {} - -fn model(app: &App) -> Model { - Model {} -} - -fn view(app: &App, model: &Model, window: Entity) { - // Begin drawing - let draw = app.draw(); - // Draw a full-screen quad - let window = app.main_window(); - let window_rect = window.rect(); - draw.rect() - // Specify the shader to use for this draw call - .fragment_shader::<"draw_fragment_shader.wgsl">() - .w_h(window_rect.w(), window_rect.h()) - .color(WHITE); -} diff --git a/examples/video/video_material.rs b/examples/video/video_material.rs index f5df17231..d4f1d72a4 100644 --- a/examples/video/video_material.rs +++ b/examples/video/video_material.rs @@ -4,7 +4,7 @@ use nannou::prelude::*; fn main() { nannou::app(model) // Register our custom material to make it available for use in our drawing - .init_custom_material::() + .shader_model::() .run(); } @@ -16,19 +16,13 @@ struct Model { } // This struct defines the data that will be passed to your shader -#[derive(Asset, TypePath, AsBindGroup, Debug, Clone, Default)] -struct VideoMaterial { +#[shader_model(fragment = "draw_video_material.wgsl")] +struct VideoShaderModel { #[texture(0)] #[sampler(1)] texture: Handle, } -impl Material for VideoMaterial { - fn fragment_shader() -> ShaderRef { - "draw_video_material.wgsl".into() - } -} - fn model(app: &App) -> Model { let camera = app.new_camera().build(); let window = app @@ -50,14 +44,15 @@ fn model(app: &App) -> Model { } fn view(app: &App, model: &Model) { - let Some(video) = app.assets().get(&model.video) else { + let assets = app.assets(); + let Some(video) = assets.get(&model.video) else { return; }; let draw = app .draw() // Initialize our draw instance with our custom material - .material(VideoMaterial { + .material(VideoShaderModel { texture: video.texture.clone(), }); diff --git a/nannou/Cargo.toml b/nannou/Cargo.toml index b1ba20e93..8628976e6 100644 --- a/nannou/Cargo.toml +++ b/nannou/Cargo.toml @@ -16,6 +16,7 @@ bevy-inspector-egui = { workspace = true, optional = true } bevy_egui = { workspace = true, optional = true } bevy_common_assets = { workspace = true, optional = true } bevy_nannou = { version = "0.1.0", path = "../bevy_nannou" } +bevy_nannou_derive = { version = "0.1.0", path = "../bevy_nannou_derive" } futures = "0.3" find_folder = "0.3" getrandom = "0.2.3" @@ -45,7 +46,6 @@ image = { workspace = true, features = [], default-features = false } [features] default = ["notosans"] egui = ["bevy_egui", "bevy-inspector-egui"] -nightly = ["bevy_nannou/nightly"] hot_reload = ["bevy/file_watcher"] isf = ["bevy_nannou/isf"] video = ["bevy_nannou/video"] diff --git a/nannou/src/app.rs b/nannou/src/app.rs index 3f16d4632..b2a11cdba 100644 --- a/nannou/src/app.rs +++ b/nannou/src/app.rs @@ -54,8 +54,7 @@ use bevy_nannou::NannouPlugin; use crate::frame::{Frame, FramePlugin}; use crate::prelude::bevy_ecs::system::SystemState; -use crate::prelude::bevy_render::extract_component::ExtractComponentPlugin; -use crate::prelude::render::NannouMesh; +use crate::prelude::render::{NannouMesh, ShaderModel}; use crate::prelude::NannouMaterialPlugin; use crate::render::{NannouRenderNode, RenderApp, RenderPlugin}; use crate::window::WindowUserFunctions; @@ -340,23 +339,15 @@ where self } - pub fn init_custom_material(mut self) -> Self + pub fn shader_model(mut self) -> Self where - T: Material + Default, + T: ShaderModel, T::Data: PartialEq + Eq + Hash + Clone, { self.app.add_plugins(NannouMaterialPlugin::::default()); self } - /// Load a fragment shader asset from the given path for use with the nannou `Draw` API. - #[cfg(feature = "nightly")] - pub fn init_fragment_shader(mut self) -> Self { - self.app - .add_plugins(NannouMaterialPlugin::>::default()); - self - } - #[cfg(any(feature = "config_json", feature = "config_toml"))] pub fn init_config(mut self) -> Self where diff --git a/nannou/src/lib.rs b/nannou/src/lib.rs index c2fdccacd..6e3351572 100644 --- a/nannou/src/lib.rs +++ b/nannou/src/lib.rs @@ -12,8 +12,6 @@ //! If you're new to nannou, we recommend checking out [the //! examples](https://github.com/nannou-org/nannou/tree/master/examples) to get an idea of how //! nannou applications are structured and how the API works. -#![cfg_attr(feature = "nightly", feature(adt_const_params))] - pub use find_folder; pub use lyon; diff --git a/nannou/src/prelude.rs b/nannou/src/prelude.rs index 347c93687..1ee22d708 100644 --- a/nannou/src/prelude.rs +++ b/nannou/src/prelude.rs @@ -14,6 +14,7 @@ pub use crate::wgpu; pub use crate::wgpu::util::{BufferInitDescriptor, DeviceExt}; pub use bevy_nannou::prelude::*; pub use nannou_core::prelude::*; +pub use bevy_nannou_derive::shader_model; pub use crate::app::{self, App, RunMode, UpdateModeExt}; pub use crate::camera::SetCamera; From 1e4d5c66b8630d2fd6587f1fed368e6aa56b6a57 Mon Sep 17 00:00:00 2001 From: Charlotte McElwain Date: Mon, 9 Sep 2024 13:03:32 -0700 Subject: [PATCH 2/7] Nix. --- Cargo.lock | 1316 ++++++++++++++++++++++++++++------------------------ flake.lock | 6 +- 2 files changed, 710 insertions(+), 612 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 5f727d417..c492871ae 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -132,9 +132,9 @@ dependencies = [ [[package]] name = "addr2line" -version = "0.22.0" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e4503c46a5c0c7844e948c9a4d6acd9f50cccb4de1c48eb9e291ea17470c678" +checksum = "f5fb1d8e4442bd405fdfd1dacb42792696b0cf9cb15882e5d097b742a676d375" dependencies = [ "gimli", ] @@ -145,6 +145,12 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +[[package]] +name = "adler2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" + [[package]] name = "adler32" version = "1.2.0" @@ -208,12 +214,13 @@ dependencies = [ [[package]] name = "alsa" -version = "0.9.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37fe60779335388a88c01ac6c3be40304d1e349de3ada3b15f7808bb90fa9dce" +checksum = "ed7572b7ba83a31e20d1b48970ee402d2e3e0537dcfe0a3ff4d6eb7508617d43" dependencies = [ "alsa-sys", "bitflags 2.6.0", + "cfg-if 1.0.0", "libc", ] @@ -244,7 +251,7 @@ dependencies = [ "ndk 0.9.0", "ndk-context", "ndk-sys 0.6.0+11769913", - "num_enum 0.7.2", + "num_enum 0.7.3", "thiserror", ] @@ -286,9 +293,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.86" +version = "1.0.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" +checksum = "10f00e1f6e58a40e807377c75c6a7f97bf9044fab57816f2414e6f5f4499d7b8" [[package]] name = "approx" @@ -339,15 +346,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ae92a5119aa49cdbcf6b9f893fe4e1d98b04ccbf82ee0584ad948a44a734dea" dependencies = [ "proc-macro2 1.0.86", - "quote 1.0.36", - "syn 2.0.69", + "quote 1.0.37", + "syn 2.0.77", ] [[package]] name = "arrayref" -version = "0.3.7" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" +checksum = "9d151e35f61089500b617991b791fc8bfd237ae50cd5950803758a179b41e67a" [[package]] name = "arrayvec" @@ -366,9 +373,9 @@ checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" [[package]] name = "arrayvec" -version = "0.7.4" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" dependencies = [ "serde", ] @@ -432,9 +439,9 @@ dependencies = [ [[package]] name = "async-executor" -version = "1.12.0" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8828ec6e544c02b0d6691d21ed9f9218d0384a82542855073c2a3f58304aaf0" +checksum = "30ca9a001c1e8ba5149f91a74362376cc6bc5b919d92d988668657bd570bdcec" dependencies = [ "async-task", "concurrent-queue", @@ -531,7 +538,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6678909d8c5d46a42abcf571271e15fdbc0a225e3646cf23762cd415046c78bf" dependencies = [ "anyhow", - "arrayvec 0.7.4", + "arrayvec 0.7.6", "log", "nom 7.1.3", "num-rational 0.4.2", @@ -544,22 +551,22 @@ version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "876c75a42f6364451a033496a14c44bffe41f5f4a8236f697391f11024e596d2" dependencies = [ - "arrayvec 0.7.4", + "arrayvec 0.7.6", ] [[package]] name = "backtrace" -version = "0.3.73" +version = "0.3.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cc23269a4f8976d0a4d2e7109211a419fe30e8d88d677cd60b6bc79c5732e0a" +checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" dependencies = [ "addr2line", - "cc", "cfg-if 1.0.0", "libc", - "miniz_oxide 0.7.4", + "miniz_oxide 0.8.0", "object", "rustc-demangle", + "windows-targets 0.52.6", ] [[package]] @@ -601,17 +608,17 @@ checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] name = "bevy" -version = "0.14.0" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e938630e9f472b1899c78ef84aa907081b23bad8333140e2295c620485b6ee7" +checksum = "043c9ad4b6fc4ca52d779873a8ca792a4e37842d07fce95363c9e17e36a1d8a0" dependencies = [ - "bevy_internal 0.14.0", + "bevy_internal 0.14.2", ] [[package]] name = "bevy" version = "0.15.0-dev" -source = "git+https://github.com/bevyengine/bevy?branch=main#54aa45e62ff10cf03ad21986805ca4faa1e5a512" +source = "git+https://github.com/bevyengine/bevy?branch=main#90bb1adeb28b82be96546e0c2cde81530241f7af" dependencies = [ "bevy_internal 0.15.0-dev", ] @@ -654,26 +661,26 @@ version = "0.25.1" source = "git+https://github.com/tychedelia/bevy-inspector-egui?branch=main#1a4e9a31cb5f4a242697a19a2f03765e463edb66" dependencies = [ "proc-macro2 1.0.86", - "quote 1.0.36", - "syn 2.0.69", + "quote 1.0.37", + "syn 2.0.77", ] [[package]] name = "bevy_a11y" -version = "0.14.0" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e613f0e7d5a92637e59744f7185e374c9a59654ecc6d7575adcec9581db1363" +checksum = "ae1a976cb539d6a5a3ff579cdb78187a6bcfbffa7e8224ea28f23d8b983d9389" dependencies = [ "accesskit 0.14.0", - "bevy_app 0.14.0", - "bevy_derive 0.14.0", - "bevy_ecs 0.14.0", + "bevy_app 0.14.2", + "bevy_derive 0.14.2", + "bevy_ecs 0.14.2", ] [[package]] name = "bevy_a11y" version = "0.15.0-dev" -source = "git+https://github.com/bevyengine/bevy?branch=main#54aa45e62ff10cf03ad21986805ca4faa1e5a512" +source = "git+https://github.com/bevyengine/bevy?branch=main#90bb1adeb28b82be96546e0c2cde81530241f7af" dependencies = [ "accesskit 0.16.0", "bevy_app 0.15.0-dev", @@ -685,7 +692,7 @@ dependencies = [ [[package]] name = "bevy_animation" version = "0.15.0-dev" -source = "git+https://github.com/bevyengine/bevy?branch=main#54aa45e62ff10cf03ad21986805ca4faa1e5a512" +source = "git+https://github.com/bevyengine/bevy?branch=main#90bb1adeb28b82be96546e0c2cde81530241f7af" dependencies = [ "bevy_app 0.15.0-dev", "bevy_asset 0.15.0-dev", @@ -708,20 +715,20 @@ dependencies = [ "serde", "thiserror", "thread_local", - "uuid 1.9.1", + "uuid 1.10.0", ] [[package]] name = "bevy_app" -version = "0.14.0" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f548e9dab7d10c5f99e3b504c758c4bf87aa67df9bcb9cc8b317a0271770e72" +checksum = "a5361d0f8a8677a5d0102cfe7321a7ecd2a8b9a4f887ce0dde1059311cf9cd42" dependencies = [ - "bevy_derive 0.14.0", - "bevy_ecs 0.14.0", - "bevy_reflect 0.14.0", - "bevy_tasks 0.14.0", - "bevy_utils 0.14.0", + "bevy_derive 0.14.2", + "bevy_ecs 0.14.2", + "bevy_reflect 0.14.2", + "bevy_tasks 0.14.2", + "bevy_utils 0.14.2", "console_error_panic_hook", "downcast-rs", "thiserror", @@ -732,7 +739,7 @@ dependencies = [ [[package]] name = "bevy_app" version = "0.15.0-dev" -source = "git+https://github.com/bevyengine/bevy?branch=main#54aa45e62ff10cf03ad21986805ca4faa1e5a512" +source = "git+https://github.com/bevyengine/bevy?branch=main#90bb1adeb28b82be96546e0c2cde81530241f7af" dependencies = [ "bevy_derive 0.15.0-dev", "bevy_ecs 0.15.0-dev", @@ -749,20 +756,20 @@ dependencies = [ [[package]] name = "bevy_asset" -version = "0.14.0" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9d198e4c3419215de2ad981d4e734bbfab46469b7575e3b7150c912b9ec5175" +checksum = "60ec5ea257e1ebd3d411f669e29acf60beb715bebc7e1f374c17f49cd3aad46c" dependencies = [ "async-broadcast", "async-fs", "async-lock", - "bevy_app 0.14.0", - "bevy_asset_macros 0.14.0", - "bevy_ecs 0.14.0", - "bevy_reflect 0.14.0", - "bevy_tasks 0.14.0", - "bevy_utils 0.14.0", - "bevy_winit 0.14.0", + "bevy_app 0.14.2", + "bevy_asset_macros 0.14.2", + "bevy_ecs 0.14.2", + "bevy_reflect 0.14.2", + "bevy_tasks 0.14.2", + "bevy_utils 0.14.2", + "bevy_winit 0.14.2", "blake3", "crossbeam-channel", "downcast-rs", @@ -773,7 +780,7 @@ dependencies = [ "ron", "serde", "thiserror", - "uuid 1.9.1", + "uuid 1.10.0", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", @@ -782,7 +789,7 @@ dependencies = [ [[package]] name = "bevy_asset" version = "0.15.0-dev" -source = "git+https://github.com/bevyengine/bevy?branch=main#54aa45e62ff10cf03ad21986805ca4faa1e5a512" +source = "git+https://github.com/bevyengine/bevy?branch=main#90bb1adeb28b82be96546e0c2cde81530241f7af" dependencies = [ "async-broadcast", "async-fs", @@ -807,7 +814,7 @@ dependencies = [ "serde", "stackfuture", "thiserror", - "uuid 1.9.1", + "uuid 1.10.0", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", @@ -815,31 +822,31 @@ dependencies = [ [[package]] name = "bevy_asset_macros" -version = "0.14.0" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11b2cbeba287a4b44e116c33dbaf37dce80a9d84477b2bb35ff459999d6c9e1b" +checksum = "c9eb05ce838d282f09d83380b4d6432aec7519d421dee8c75cc20e6148237e6e" dependencies = [ - "bevy_macro_utils 0.14.0", + "bevy_macro_utils 0.14.2", "proc-macro2 1.0.86", - "quote 1.0.36", - "syn 2.0.69", + "quote 1.0.37", + "syn 2.0.77", ] [[package]] name = "bevy_asset_macros" version = "0.15.0-dev" -source = "git+https://github.com/bevyengine/bevy?branch=main#54aa45e62ff10cf03ad21986805ca4faa1e5a512" +source = "git+https://github.com/bevyengine/bevy?branch=main#90bb1adeb28b82be96546e0c2cde81530241f7af" dependencies = [ "bevy_macro_utils 0.15.0-dev", "proc-macro2 1.0.86", - "quote 1.0.36", - "syn 2.0.69", + "quote 1.0.37", + "syn 2.0.77", ] [[package]] name = "bevy_audio" version = "0.15.0-dev" -source = "git+https://github.com/bevyengine/bevy?branch=main#54aa45e62ff10cf03ad21986805ca4faa1e5a512" +source = "git+https://github.com/bevyengine/bevy?branch=main#90bb1adeb28b82be96546e0c2cde81530241f7af" dependencies = [ "bevy_app 0.15.0-dev", "bevy_asset 0.15.0-dev", @@ -857,7 +864,7 @@ dependencies = [ [[package]] name = "bevy_color" version = "0.15.0-dev" -source = "git+https://github.com/bevyengine/bevy?branch=main#54aa45e62ff10cf03ad21986805ca4faa1e5a512" +source = "git+https://github.com/bevyengine/bevy?branch=main#90bb1adeb28b82be96546e0c2cde81530241f7af" dependencies = [ "bevy_math 0.15.0-dev", "bevy_reflect 0.15.0-dev", @@ -875,44 +882,44 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6f631ce2863f3b6f1af3fa24143363b9fbd21c44218caad495a17b83e6968256" dependencies = [ "anyhow", - "bevy 0.14.0", + "bevy 0.14.2", "serde", "serde_json", "thiserror", - "toml 0.8.14", + "toml 0.8.19", ] [[package]] name = "bevy_core" -version = "0.14.0" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ddeed5ebf2fa75a4d4f32e2da9c60f11037e36252695059a151c6685cd3d72b" +checksum = "de706862871a1fe99ea619bff2f99d73e43ad82f19ef866a9e19a14c957c8537" dependencies = [ - "bevy_app 0.14.0", - "bevy_ecs 0.14.0", - "bevy_reflect 0.14.0", - "bevy_tasks 0.14.0", - "bevy_utils 0.14.0", - "uuid 1.9.1", + "bevy_app 0.14.2", + "bevy_ecs 0.14.2", + "bevy_reflect 0.14.2", + "bevy_tasks 0.14.2", + "bevy_utils 0.14.2", + "uuid 1.10.0", ] [[package]] name = "bevy_core" version = "0.15.0-dev" -source = "git+https://github.com/bevyengine/bevy?branch=main#54aa45e62ff10cf03ad21986805ca4faa1e5a512" +source = "git+https://github.com/bevyengine/bevy?branch=main#90bb1adeb28b82be96546e0c2cde81530241f7af" dependencies = [ "bevy_app 0.15.0-dev", "bevy_ecs 0.15.0-dev", "bevy_reflect 0.15.0-dev", "bevy_tasks 0.15.0-dev", "bevy_utils 0.15.0-dev", - "uuid 1.9.1", + "uuid 1.10.0", ] [[package]] name = "bevy_core_pipeline" version = "0.15.0-dev" -source = "git+https://github.com/bevyengine/bevy?branch=main#54aa45e62ff10cf03ad21986805ca4faa1e5a512" +source = "git+https://github.com/bevyengine/bevy?branch=main#90bb1adeb28b82be96546e0c2cde81530241f7af" dependencies = [ "bevy_app 0.15.0-dev", "bevy_asset 0.15.0-dev", @@ -935,44 +942,44 @@ dependencies = [ [[package]] name = "bevy_derive" -version = "0.14.0" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8a8173bad3ed53fa158806b1beda147263337d6ef71a093780dd141b74386b1" +checksum = "3fbfc33a4c6b80760bb8bf850a2cc65a1e031da62fd3ca8b552189104dc98514" dependencies = [ - "bevy_macro_utils 0.14.0", - "quote 1.0.36", - "syn 2.0.69", + "bevy_macro_utils 0.14.2", + "quote 1.0.37", + "syn 2.0.77", ] [[package]] name = "bevy_derive" version = "0.15.0-dev" -source = "git+https://github.com/bevyengine/bevy?branch=main#54aa45e62ff10cf03ad21986805ca4faa1e5a512" +source = "git+https://github.com/bevyengine/bevy?branch=main#90bb1adeb28b82be96546e0c2cde81530241f7af" dependencies = [ "bevy_macro_utils 0.15.0-dev", - "quote 1.0.36", - "syn 2.0.69", + "quote 1.0.37", + "syn 2.0.77", ] [[package]] name = "bevy_diagnostic" -version = "0.14.0" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b7f82011fd70048be282526a99756d54bf00e874edafa9664ba0dc247678f03" +checksum = "bebb154e0cc78e3bbfbfdb42fb502b14c1cd47e72f16e6d4228dfe6233ba6cbd" dependencies = [ - "bevy_app 0.14.0", - "bevy_core 0.14.0", - "bevy_ecs 0.14.0", - "bevy_tasks 0.14.0", - "bevy_time 0.14.0", - "bevy_utils 0.14.0", + "bevy_app 0.14.2", + "bevy_core 0.14.2", + "bevy_ecs 0.14.2", + "bevy_tasks 0.14.2", + "bevy_time 0.14.2", + "bevy_utils 0.14.2", "const-fnv1a-hash", ] [[package]] name = "bevy_diagnostic" version = "0.15.0-dev" -source = "git+https://github.com/bevyengine/bevy?branch=main#54aa45e62ff10cf03ad21986805ca4faa1e5a512" +source = "git+https://github.com/bevyengine/bevy?branch=main#90bb1adeb28b82be96546e0c2cde81530241f7af" dependencies = [ "bevy_app 0.15.0-dev", "bevy_core 0.15.0-dev", @@ -986,29 +993,30 @@ dependencies = [ [[package]] name = "bevy_ecs" -version = "0.14.0" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c77fdc3a7230eff2fcebe4bd17c155bd238c660a0089d0f98c39ba0d461b923" +checksum = "9ee4222406637f3c8e3991a99788cfcde76097bf997c311f1b6297364057483f" dependencies = [ - "bevy_ecs_macros 0.14.0", - "bevy_ptr 0.14.0", - "bevy_reflect 0.14.0", - "bevy_tasks 0.14.0", - "bevy_utils 0.14.0", + "bevy_ecs_macros 0.14.2", + "bevy_ptr 0.14.2", + "bevy_reflect 0.14.2", + "bevy_tasks 0.14.2", + "bevy_utils 0.14.2", "bitflags 2.6.0", "concurrent-queue", "fixedbitset 0.5.7", "nonmax", "petgraph 0.6.5", + "serde", "thiserror", ] [[package]] name = "bevy_ecs" version = "0.15.0-dev" -source = "git+https://github.com/bevyengine/bevy?branch=main#54aa45e62ff10cf03ad21986805ca4faa1e5a512" +source = "git+https://github.com/bevyengine/bevy?branch=main#90bb1adeb28b82be96546e0c2cde81530241f7af" dependencies = [ - "arrayvec 0.7.4", + "arrayvec 0.7.6", "bevy_ecs_macros 0.15.0-dev", "bevy_ptr 0.15.0-dev", "bevy_reflect 0.15.0-dev", @@ -1025,25 +1033,25 @@ dependencies = [ [[package]] name = "bevy_ecs_macros" -version = "0.14.0" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9272b511958525306cd141726d3ca59740f79fc0707c439b55a007bcc3497308" +checksum = "36b573430b67aff7bde8292257494f39343401379bfbda64035ba4918bba7b20" dependencies = [ - "bevy_macro_utils 0.14.0", + "bevy_macro_utils 0.14.2", "proc-macro2 1.0.86", - "quote 1.0.36", - "syn 2.0.69", + "quote 1.0.37", + "syn 2.0.77", ] [[package]] name = "bevy_ecs_macros" version = "0.15.0-dev" -source = "git+https://github.com/bevyengine/bevy?branch=main#54aa45e62ff10cf03ad21986805ca4faa1e5a512" +source = "git+https://github.com/bevyengine/bevy?branch=main#90bb1adeb28b82be96546e0c2cde81530241f7af" dependencies = [ "bevy_macro_utils 0.15.0-dev", "proc-macro2 1.0.86", - "quote 1.0.36", - "syn 2.0.69", + "quote 1.0.37", + "syn 2.0.77", ] [[package]] @@ -1093,7 +1101,7 @@ dependencies = [ [[package]] name = "bevy_encase_derive" version = "0.15.0-dev" -source = "git+https://github.com/bevyengine/bevy?branch=main#54aa45e62ff10cf03ad21986805ca4faa1e5a512" +source = "git+https://github.com/bevyengine/bevy?branch=main#90bb1adeb28b82be96546e0c2cde81530241f7af" dependencies = [ "bevy_macro_utils 0.15.0-dev", "encase_derive_impl 0.8.0", @@ -1102,7 +1110,7 @@ dependencies = [ [[package]] name = "bevy_gilrs" version = "0.15.0-dev" -source = "git+https://github.com/bevyengine/bevy?branch=main#54aa45e62ff10cf03ad21986805ca4faa1e5a512" +source = "git+https://github.com/bevyengine/bevy?branch=main#90bb1adeb28b82be96546e0c2cde81530241f7af" dependencies = [ "bevy_app 0.15.0-dev", "bevy_ecs 0.15.0-dev", @@ -1116,7 +1124,7 @@ dependencies = [ [[package]] name = "bevy_gizmos" version = "0.15.0-dev" -source = "git+https://github.com/bevyengine/bevy?branch=main#54aa45e62ff10cf03ad21986805ca4faa1e5a512" +source = "git+https://github.com/bevyengine/bevy?branch=main#90bb1adeb28b82be96546e0c2cde81530241f7af" dependencies = [ "bevy_app 0.15.0-dev", "bevy_asset 0.15.0-dev", @@ -1138,18 +1146,18 @@ dependencies = [ [[package]] name = "bevy_gizmos_macros" version = "0.15.0-dev" -source = "git+https://github.com/bevyengine/bevy?branch=main#54aa45e62ff10cf03ad21986805ca4faa1e5a512" +source = "git+https://github.com/bevyengine/bevy?branch=main#90bb1adeb28b82be96546e0c2cde81530241f7af" dependencies = [ "bevy_macro_utils 0.15.0-dev", "proc-macro2 1.0.86", - "quote 1.0.36", - "syn 2.0.69", + "quote 1.0.37", + "syn 2.0.77", ] [[package]] name = "bevy_gltf" version = "0.15.0-dev" -source = "git+https://github.com/bevyengine/bevy?branch=main#54aa45e62ff10cf03ad21986805ca4faa1e5a512" +source = "git+https://github.com/bevyengine/bevy?branch=main#90bb1adeb28b82be96546e0c2cde81530241f7af" dependencies = [ "base64 0.22.1", "bevy_animation", @@ -1178,22 +1186,22 @@ dependencies = [ [[package]] name = "bevy_hierarchy" -version = "0.14.0" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "802eca6f341d19ade790ccfaba7044be4d823b708087eb5ac4c1f74e4ea0916a" +checksum = "a88b912b37e1bc4dbb2aa40723199f74c8b06c4fbb6da0bb4585131df28ef66e" dependencies = [ - "bevy_app 0.14.0", - "bevy_core 0.14.0", - "bevy_ecs 0.14.0", - "bevy_reflect 0.14.0", - "bevy_utils 0.14.0", + "bevy_app 0.14.2", + "bevy_core 0.14.2", + "bevy_ecs 0.14.2", + "bevy_reflect 0.14.2", + "bevy_utils 0.14.2", "smallvec 1.13.2", ] [[package]] name = "bevy_hierarchy" version = "0.15.0-dev" -source = "git+https://github.com/bevyengine/bevy?branch=main#54aa45e62ff10cf03ad21986805ca4faa1e5a512" +source = "git+https://github.com/bevyengine/bevy?branch=main#90bb1adeb28b82be96546e0c2cde81530241f7af" dependencies = [ "bevy_app 0.15.0-dev", "bevy_core 0.15.0-dev", @@ -1205,15 +1213,15 @@ dependencies = [ [[package]] name = "bevy_input" -version = "0.14.0" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d050f1433f48ca23f1ea078734ebff119a3f76eb7d221725ab0f1fd9f81230b" +checksum = "8dd3a54e67cc3ba17971de7b1a7e64eda84493c1e7bb6bfa11c6cf8ac124377b" dependencies = [ - "bevy_app 0.14.0", - "bevy_ecs 0.14.0", - "bevy_math 0.14.0", - "bevy_reflect 0.14.0", - "bevy_utils 0.14.0", + "bevy_app 0.14.2", + "bevy_ecs 0.14.2", + "bevy_math 0.14.2", + "bevy_reflect 0.14.2", + "bevy_utils 0.14.2", "smol_str", "thiserror", ] @@ -1221,7 +1229,7 @@ dependencies = [ [[package]] name = "bevy_input" version = "0.15.0-dev" -source = "git+https://github.com/bevyengine/bevy?branch=main#54aa45e62ff10cf03ad21986805ca4faa1e5a512" +source = "git+https://github.com/bevyengine/bevy?branch=main#90bb1adeb28b82be96546e0c2cde81530241f7af" dependencies = [ "bevy_app 0.15.0-dev", "bevy_ecs 0.15.0-dev", @@ -1234,34 +1242,34 @@ dependencies = [ [[package]] name = "bevy_internal" -version = "0.14.0" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ddd2b23e44d3a1f8ae547cbee5b6661f8135cc456c5de206e8648789944e7a1" -dependencies = [ - "bevy_a11y 0.14.0", - "bevy_app 0.14.0", - "bevy_asset 0.14.0", - "bevy_core 0.14.0", - "bevy_derive 0.14.0", - "bevy_diagnostic 0.14.0", - "bevy_ecs 0.14.0", - "bevy_hierarchy 0.14.0", - "bevy_input 0.14.0", - "bevy_log 0.14.0", - "bevy_math 0.14.0", - "bevy_ptr 0.14.0", - "bevy_reflect 0.14.0", - "bevy_tasks 0.14.0", - "bevy_time 0.14.0", - "bevy_transform 0.14.0", - "bevy_utils 0.14.0", - "bevy_window 0.14.0", +checksum = "45d435cac77c568f3aef65f786a5fee0e53c81950c5258182dd2c1d6cd6c4fec" +dependencies = [ + "bevy_a11y 0.14.2", + "bevy_app 0.14.2", + "bevy_asset 0.14.2", + "bevy_core 0.14.2", + "bevy_derive 0.14.2", + "bevy_diagnostic 0.14.2", + "bevy_ecs 0.14.2", + "bevy_hierarchy 0.14.2", + "bevy_input 0.14.2", + "bevy_log 0.14.2", + "bevy_math 0.14.2", + "bevy_ptr 0.14.2", + "bevy_reflect 0.14.2", + "bevy_tasks 0.14.2", + "bevy_time 0.14.2", + "bevy_transform 0.14.2", + "bevy_utils 0.14.2", + "bevy_window 0.14.2", ] [[package]] name = "bevy_internal" version = "0.15.0-dev" -source = "git+https://github.com/bevyengine/bevy?branch=main#54aa45e62ff10cf03ad21986805ca4faa1e5a512" +source = "git+https://github.com/bevyengine/bevy?branch=main#90bb1adeb28b82be96546e0c2cde81530241f7af" dependencies = [ "bevy_a11y 0.15.0-dev", "bevy_animation", @@ -1301,14 +1309,14 @@ dependencies = [ [[package]] name = "bevy_log" -version = "0.14.0" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bab641fd0de254915ab746165a07677465b2d89b72f5b49367d73b9197548a35" +checksum = "67240c7596c8f0653e50fce35a60196516817449235193246599facba9002e02" dependencies = [ "android_log-sys", - "bevy_app 0.14.0", - "bevy_ecs 0.14.0", - "bevy_utils 0.14.0", + "bevy_app 0.14.2", + "bevy_ecs 0.14.2", + "bevy_utils 0.14.2", "tracing-log", "tracing-subscriber", "tracing-wasm", @@ -1317,7 +1325,7 @@ dependencies = [ [[package]] name = "bevy_log" version = "0.15.0-dev" -source = "git+https://github.com/bevyengine/bevy?branch=main#54aa45e62ff10cf03ad21986805ca4faa1e5a512" +source = "git+https://github.com/bevyengine/bevy?branch=main#90bb1adeb28b82be96546e0c2cde81530241f7af" dependencies = [ "android_log-sys", "bevy_app 0.15.0-dev", @@ -1330,36 +1338,37 @@ dependencies = [ [[package]] name = "bevy_macro_utils" -version = "0.14.0" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3ad860d35d74b35d4d6ae7f656d163b6f475aa2e64fc293ee86ac901977ddb7" +checksum = "bfc65e570012e64a21f3546df68591aaede8349e6174fb500071677f54f06630" dependencies = [ "proc-macro2 1.0.86", - "quote 1.0.36", - "syn 2.0.69", - "toml_edit 0.22.14", + "quote 1.0.37", + "syn 2.0.77", + "toml_edit 0.22.20", ] [[package]] name = "bevy_macro_utils" version = "0.15.0-dev" -source = "git+https://github.com/bevyengine/bevy?branch=main#54aa45e62ff10cf03ad21986805ca4faa1e5a512" +source = "git+https://github.com/bevyengine/bevy?branch=main#90bb1adeb28b82be96546e0c2cde81530241f7af" dependencies = [ "proc-macro2 1.0.86", - "quote 1.0.36", - "syn 2.0.69", - "toml_edit 0.22.14", + "quote 1.0.37", + "syn 2.0.77", + "toml_edit 0.22.20", ] [[package]] name = "bevy_math" -version = "0.14.0" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51bd6ce2174d3237d30e0ab5b2508480cc7593ca4d96ffb3a3095f9fc6bbc34c" +checksum = "5421792749dda753ab3718e77d27bfce38443daf1850b836b97530b6245a4581" dependencies = [ - "bevy_reflect 0.14.0", + "bevy_reflect 0.14.2", "glam 0.27.0", "rand 0.8.5", + "serde", "smallvec 1.13.2", "thiserror", ] @@ -1367,7 +1376,7 @@ dependencies = [ [[package]] name = "bevy_math" version = "0.15.0-dev" -source = "git+https://github.com/bevyengine/bevy?branch=main#54aa45e62ff10cf03ad21986805ca4faa1e5a512" +source = "git+https://github.com/bevyengine/bevy?branch=main#90bb1adeb28b82be96546e0c2cde81530241f7af" dependencies = [ "bevy_reflect 0.15.0-dev", "glam 0.28.0", @@ -1382,7 +1391,7 @@ dependencies = [ [[package]] name = "bevy_mikktspace" version = "0.15.0-dev" -source = "git+https://github.com/bevyengine/bevy?branch=main#54aa45e62ff10cf03ad21986805ca4faa1e5a512" +source = "git+https://github.com/bevyengine/bevy?branch=main#90bb1adeb28b82be96546e0c2cde81530241f7af" dependencies = [ "glam 0.28.0", ] @@ -1404,7 +1413,7 @@ dependencies = [ "bevy 0.15.0-dev", "bevy_nannou_draw", "proc-macro2 1.0.86", - "quote 1.0.36", + "quote 1.0.37", "syn 1.0.109", ] @@ -1419,7 +1428,7 @@ dependencies = [ "num-traits", "rayon", "rusttype", - "uuid 1.9.1", + "uuid 1.10.0", ] [[package]] @@ -1449,7 +1458,7 @@ dependencies = [ [[package]] name = "bevy_pbr" version = "0.15.0-dev" -source = "git+https://github.com/bevyengine/bevy?branch=main#54aa45e62ff10cf03ad21986805ca4faa1e5a512" +source = "git+https://github.com/bevyengine/bevy?branch=main#90bb1adeb28b82be96546e0c2cde81530241f7af" dependencies = [ "bevy_app 0.15.0-dev", "bevy_asset 0.15.0-dev", @@ -1475,7 +1484,7 @@ dependencies = [ [[package]] name = "bevy_picking" version = "0.15.0-dev" -source = "git+https://github.com/bevyengine/bevy?branch=main#54aa45e62ff10cf03ad21986805ca4faa1e5a512" +source = "git+https://github.com/bevyengine/bevy?branch=main#90bb1adeb28b82be96546e0c2cde81530241f7af" dependencies = [ "bevy_app 0.15.0-dev", "bevy_asset 0.15.0-dev", @@ -1490,29 +1499,29 @@ dependencies = [ "bevy_transform 0.15.0-dev", "bevy_utils 0.15.0-dev", "bevy_window 0.15.0-dev", - "uuid 1.9.1", + "uuid 1.10.0", ] [[package]] name = "bevy_ptr" -version = "0.14.0" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c115c97a5c8a263bd0aa7001b999772c744ac5ba797d07c86f25734ce381ea69" +checksum = "61baa1bdc1f4a7ac2c18217570a7cc04e1cd54d38456e91782f0371c79afe0a8" [[package]] name = "bevy_ptr" version = "0.15.0-dev" -source = "git+https://github.com/bevyengine/bevy?branch=main#54aa45e62ff10cf03ad21986805ca4faa1e5a512" +source = "git+https://github.com/bevyengine/bevy?branch=main#90bb1adeb28b82be96546e0c2cde81530241f7af" [[package]] name = "bevy_reflect" -version = "0.14.0" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "406ea0fce267169c2320c7302d97d09f605105686346762562c5f65960b5ca2f" +checksum = "2508785a4a5809f25a237eec4fee2c91a4dbcf81324b2bbc2d6c52629e603781" dependencies = [ - "bevy_ptr 0.14.0", - "bevy_reflect_derive 0.14.0", - "bevy_utils 0.14.0", + "bevy_ptr 0.14.2", + "bevy_reflect_derive 0.14.2", + "bevy_utils 0.14.2", "downcast-rs", "erased-serde", "glam 0.27.0", @@ -1520,13 +1529,13 @@ dependencies = [ "smallvec 1.13.2", "smol_str", "thiserror", - "uuid 1.9.1", + "uuid 1.10.0", ] [[package]] name = "bevy_reflect" version = "0.15.0-dev" -source = "git+https://github.com/bevyengine/bevy?branch=main#54aa45e62ff10cf03ad21986805ca4faa1e5a512" +source = "git+https://github.com/bevyengine/bevy?branch=main#90bb1adeb28b82be96546e0c2cde81530241f7af" dependencies = [ "bevy_ptr 0.15.0-dev", "bevy_reflect_derive 0.15.0-dev", @@ -1539,38 +1548,38 @@ dependencies = [ "smallvec 1.13.2", "smol_str", "thiserror", - "uuid 1.9.1", + "uuid 1.10.0", ] [[package]] name = "bevy_reflect_derive" -version = "0.14.0" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0427fdb4425fc72cc96d45e550df83ace6347f0503840de116c76a40843ba751" +checksum = "967d5da1882ec3bb3675353915d3da909cafac033cbf31e58727824a1ad2a288" dependencies = [ - "bevy_macro_utils 0.14.0", + "bevy_macro_utils 0.14.2", "proc-macro2 1.0.86", - "quote 1.0.36", - "syn 2.0.69", - "uuid 1.9.1", + "quote 1.0.37", + "syn 2.0.77", + "uuid 1.10.0", ] [[package]] name = "bevy_reflect_derive" version = "0.15.0-dev" -source = "git+https://github.com/bevyengine/bevy?branch=main#54aa45e62ff10cf03ad21986805ca4faa1e5a512" +source = "git+https://github.com/bevyengine/bevy?branch=main#90bb1adeb28b82be96546e0c2cde81530241f7af" dependencies = [ "bevy_macro_utils 0.15.0-dev", "proc-macro2 1.0.86", - "quote 1.0.36", - "syn 2.0.69", - "uuid 1.9.1", + "quote 1.0.37", + "syn 2.0.77", + "uuid 1.10.0", ] [[package]] name = "bevy_render" version = "0.15.0-dev" -source = "git+https://github.com/bevyengine/bevy?branch=main#54aa45e62ff10cf03ad21986805ca4faa1e5a512" +source = "git+https://github.com/bevyengine/bevy?branch=main#90bb1adeb28b82be96546e0c2cde81530241f7af" dependencies = [ "async-channel", "bevy_app 0.15.0-dev", @@ -1619,18 +1628,18 @@ dependencies = [ [[package]] name = "bevy_render_macros" version = "0.15.0-dev" -source = "git+https://github.com/bevyengine/bevy?branch=main#54aa45e62ff10cf03ad21986805ca4faa1e5a512" +source = "git+https://github.com/bevyengine/bevy?branch=main#90bb1adeb28b82be96546e0c2cde81530241f7af" dependencies = [ "bevy_macro_utils 0.15.0-dev", "proc-macro2 1.0.86", - "quote 1.0.36", - "syn 2.0.69", + "quote 1.0.37", + "syn 2.0.77", ] [[package]] name = "bevy_scene" version = "0.15.0-dev" -source = "git+https://github.com/bevyengine/bevy?branch=main#54aa45e62ff10cf03ad21986805ca4faa1e5a512" +source = "git+https://github.com/bevyengine/bevy?branch=main#90bb1adeb28b82be96546e0c2cde81530241f7af" dependencies = [ "bevy_app 0.15.0-dev", "bevy_asset 0.15.0-dev", @@ -1643,13 +1652,13 @@ dependencies = [ "bevy_utils 0.15.0-dev", "serde", "thiserror", - "uuid 1.9.1", + "uuid 1.10.0", ] [[package]] name = "bevy_sprite" version = "0.15.0-dev" -source = "git+https://github.com/bevyengine/bevy?branch=main#54aa45e62ff10cf03ad21986805ca4faa1e5a512" +source = "git+https://github.com/bevyengine/bevy?branch=main#90bb1adeb28b82be96546e0c2cde81530241f7af" dependencies = [ "bevy_app 0.15.0-dev", "bevy_asset 0.15.0-dev", @@ -1677,7 +1686,7 @@ dependencies = [ [[package]] name = "bevy_state" version = "0.15.0-dev" -source = "git+https://github.com/bevyengine/bevy?branch=main#54aa45e62ff10cf03ad21986805ca4faa1e5a512" +source = "git+https://github.com/bevyengine/bevy?branch=main#90bb1adeb28b82be96546e0c2cde81530241f7af" dependencies = [ "bevy_app 0.15.0-dev", "bevy_ecs 0.15.0-dev", @@ -1690,19 +1699,19 @@ dependencies = [ [[package]] name = "bevy_state_macros" version = "0.15.0-dev" -source = "git+https://github.com/bevyengine/bevy?branch=main#54aa45e62ff10cf03ad21986805ca4faa1e5a512" +source = "git+https://github.com/bevyengine/bevy?branch=main#90bb1adeb28b82be96546e0c2cde81530241f7af" dependencies = [ "bevy_macro_utils 0.15.0-dev", "proc-macro2 1.0.86", - "quote 1.0.36", - "syn 2.0.69", + "quote 1.0.37", + "syn 2.0.77", ] [[package]] name = "bevy_tasks" -version = "0.14.0" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a8bfb8d484bdb1e9bec3789c75202adc5e608c4244347152e50fb31668a54f9" +checksum = "77865f310b1fc48fb05b7c4adbe76607ec01d0c14f8ab4caba4d714c86439946" dependencies = [ "async-executor", "futures-lite", @@ -1712,7 +1721,7 @@ dependencies = [ [[package]] name = "bevy_tasks" version = "0.15.0-dev" -source = "git+https://github.com/bevyengine/bevy?branch=main#54aa45e62ff10cf03ad21986805ca4faa1e5a512" +source = "git+https://github.com/bevyengine/bevy?branch=main#90bb1adeb28b82be96546e0c2cde81530241f7af" dependencies = [ "async-channel", "async-executor", @@ -1726,7 +1735,7 @@ dependencies = [ [[package]] name = "bevy_text" version = "0.15.0-dev" -source = "git+https://github.com/bevyengine/bevy?branch=main#54aa45e62ff10cf03ad21986805ca4faa1e5a512" +source = "git+https://github.com/bevyengine/bevy?branch=main#90bb1adeb28b82be96546e0c2cde81530241f7af" dependencies = [ "bevy_app 0.15.0-dev", "bevy_asset 0.15.0-dev", @@ -1749,14 +1758,14 @@ dependencies = [ [[package]] name = "bevy_time" -version = "0.14.0" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6c3d3d14ee8b0dbe4819fd516cc75509b61946134d78e0ee89ad3d1835ffe6c" +checksum = "f4e4d53ec32a1b16492396951d04de0d2d90e924bf9adcb8d1adacab5ab6c17c" dependencies = [ - "bevy_app 0.14.0", - "bevy_ecs 0.14.0", - "bevy_reflect 0.14.0", - "bevy_utils 0.14.0", + "bevy_app 0.14.2", + "bevy_ecs 0.14.2", + "bevy_reflect 0.14.2", + "bevy_utils 0.14.2", "crossbeam-channel", "thiserror", ] @@ -1764,7 +1773,7 @@ dependencies = [ [[package]] name = "bevy_time" version = "0.15.0-dev" -source = "git+https://github.com/bevyengine/bevy?branch=main#54aa45e62ff10cf03ad21986805ca4faa1e5a512" +source = "git+https://github.com/bevyengine/bevy?branch=main#90bb1adeb28b82be96546e0c2cde81530241f7af" dependencies = [ "bevy_app 0.15.0-dev", "bevy_ecs 0.15.0-dev", @@ -1776,22 +1785,22 @@ dependencies = [ [[package]] name = "bevy_transform" -version = "0.14.0" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97e8aa6b16be573277c6ceda30aebf1d78af7c6ede19b448dcb052fb8601d815" +checksum = "d5493dce84427d00a9266e8e4386d738a72ee8640423b62dfcecb6dfccbfe0d2" dependencies = [ - "bevy_app 0.14.0", - "bevy_ecs 0.14.0", - "bevy_hierarchy 0.14.0", - "bevy_math 0.14.0", - "bevy_reflect 0.14.0", + "bevy_app 0.14.2", + "bevy_ecs 0.14.2", + "bevy_hierarchy 0.14.2", + "bevy_math 0.14.2", + "bevy_reflect 0.14.2", "thiserror", ] [[package]] name = "bevy_transform" version = "0.15.0-dev" -source = "git+https://github.com/bevyengine/bevy?branch=main#54aa45e62ff10cf03ad21986805ca4faa1e5a512" +source = "git+https://github.com/bevyengine/bevy?branch=main#90bb1adeb28b82be96546e0c2cde81530241f7af" dependencies = [ "bevy_app 0.15.0-dev", "bevy_ecs 0.15.0-dev", @@ -1804,7 +1813,7 @@ dependencies = [ [[package]] name = "bevy_ui" version = "0.15.0-dev" -source = "git+https://github.com/bevyengine/bevy?branch=main#54aa45e62ff10cf03ad21986805ca4faa1e5a512" +source = "git+https://github.com/bevyengine/bevy?branch=main#90bb1adeb28b82be96546e0c2cde81530241f7af" dependencies = [ "bevy_a11y 0.15.0-dev", "bevy_app 0.15.0-dev", @@ -1833,12 +1842,12 @@ dependencies = [ [[package]] name = "bevy_utils" -version = "0.14.0" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fab364910e8f5839578aba9cfda00a8388e9ebe352ceb8491a742ce6af9ec6e" +checksum = "ffb0ec333b5965771153bd746f92ffd8aeeb9d008a8620ffd9ed474859381a5e" dependencies = [ "ahash", - "bevy_utils_proc_macros 0.14.0", + "bevy_utils_proc_macros 0.14.2", "getrandom 0.2.15", "hashbrown 0.14.5", "thread_local", @@ -1849,7 +1858,7 @@ dependencies = [ [[package]] name = "bevy_utils" version = "0.15.0-dev" -source = "git+https://github.com/bevyengine/bevy?branch=main#54aa45e62ff10cf03ad21986805ca4faa1e5a512" +source = "git+https://github.com/bevyengine/bevy?branch=main#90bb1adeb28b82be96546e0c2cde81530241f7af" dependencies = [ "ahash", "bevy_utils_proc_macros 0.15.0-dev", @@ -1862,37 +1871,37 @@ dependencies = [ [[package]] name = "bevy_utils_proc_macros" -version = "0.14.0" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad9db261ab33a046e1f54b35f885a44f21fcc80aa2bc9050319466b88fe58fe3" +checksum = "38f1ab8f2f6f58439d260081d89a42b02690e5fdd64f814edc9417d33fcf2857" dependencies = [ "proc-macro2 1.0.86", - "quote 1.0.36", - "syn 2.0.69", + "quote 1.0.37", + "syn 2.0.77", ] [[package]] name = "bevy_utils_proc_macros" version = "0.15.0-dev" -source = "git+https://github.com/bevyengine/bevy?branch=main#54aa45e62ff10cf03ad21986805ca4faa1e5a512" +source = "git+https://github.com/bevyengine/bevy?branch=main#90bb1adeb28b82be96546e0c2cde81530241f7af" dependencies = [ "proc-macro2 1.0.86", - "quote 1.0.36", - "syn 2.0.69", + "quote 1.0.37", + "syn 2.0.77", ] [[package]] name = "bevy_window" -version = "0.14.0" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9ea5777f933bf7ecaeb3af1a30845720ec730e007972ca7d4aba2d3512abe24" +checksum = "c89e88a20db64ea8204540afb4699295947c454738fd50293f7b32ab8be857a6" dependencies = [ - "bevy_a11y 0.14.0", - "bevy_app 0.14.0", - "bevy_ecs 0.14.0", - "bevy_math 0.14.0", - "bevy_reflect 0.14.0", - "bevy_utils 0.14.0", + "bevy_a11y 0.14.2", + "bevy_app 0.14.2", + "bevy_ecs 0.14.2", + "bevy_math 0.14.2", + "bevy_reflect 0.14.2", + "bevy_utils 0.14.2", "raw-window-handle", "smol_str", ] @@ -1900,7 +1909,7 @@ dependencies = [ [[package]] name = "bevy_window" version = "0.15.0-dev" -source = "git+https://github.com/bevyengine/bevy?branch=main#54aa45e62ff10cf03ad21986805ca4faa1e5a512" +source = "git+https://github.com/bevyengine/bevy?branch=main#90bb1adeb28b82be96546e0c2cde81530241f7af" dependencies = [ "bevy_a11y 0.15.0-dev", "bevy_app 0.15.0-dev", @@ -1915,24 +1924,24 @@ dependencies = [ [[package]] name = "bevy_winit" -version = "0.14.0" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8c2213bbf14debe819ec8ad4913f233c596002d087bc6f1f20d533e2ebaf8c6" +checksum = "d0bef8ec3e4b45db943ad4d1c0bf59b09e382ce0651a706e2f33a70fa955303c" dependencies = [ "accesskit_winit 0.20.4", "approx 0.5.1", - "bevy_a11y 0.14.0", - "bevy_app 0.14.0", - "bevy_derive 0.14.0", - "bevy_ecs 0.14.0", - "bevy_hierarchy 0.14.0", - "bevy_input 0.14.0", - "bevy_log 0.14.0", - "bevy_math 0.14.0", - "bevy_reflect 0.14.0", - "bevy_tasks 0.14.0", - "bevy_utils 0.14.0", - "bevy_window 0.14.0", + "bevy_a11y 0.14.2", + "bevy_app 0.14.2", + "bevy_derive 0.14.2", + "bevy_ecs 0.14.2", + "bevy_hierarchy 0.14.2", + "bevy_input 0.14.2", + "bevy_log 0.14.2", + "bevy_math 0.14.2", + "bevy_reflect 0.14.2", + "bevy_tasks 0.14.2", + "bevy_utils 0.14.2", + "bevy_window 0.14.2", "cfg-if 1.0.0", "crossbeam-channel", "raw-window-handle", @@ -1944,7 +1953,7 @@ dependencies = [ [[package]] name = "bevy_winit" version = "0.15.0-dev" -source = "git+https://github.com/bevyengine/bevy?branch=main#54aa45e62ff10cf03ad21986805ca4faa1e5a512" +source = "git+https://github.com/bevyengine/bevy?branch=main#90bb1adeb28b82be96546e0c2cde81530241f7af" dependencies = [ "accesskit_winit 0.22.0", "approx 0.5.1", @@ -1983,11 +1992,11 @@ dependencies = [ "log", "prettyplease", "proc-macro2 1.0.86", - "quote 1.0.36", + "quote 1.0.37", "regex", "rustc-hash", "shlex", - "syn 2.0.69", + "syn 2.0.77", "which", ] @@ -2062,18 +2071,18 @@ dependencies = [ [[package]] name = "bitstream-io" -version = "2.4.2" +version = "2.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "415f8399438eb5e4b2f73ed3152a3448b98149dda642a957ee704e1daa5cf1d8" +checksum = "b81e1519b0d82120d2fd469d5bfb2919a9361c48b02d82d04befc1cdd2002452" [[package]] name = "blake3" -version = "1.5.1" +version = "1.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30cca6d3674597c30ddf2c587bf8d9d65c9a84d2326d941cc79c9842dfe0ef52" +checksum = "d82033247fd8e890df8f740e407ad4d038debb9eb1f40533fffb32e7d17dc6f7" dependencies = [ "arrayref", - "arrayvec 0.7.4", + "arrayvec 0.7.6", "cc", "cfg-if 1.0.0", "constant_time_eq", @@ -2118,9 +2127,9 @@ dependencies = [ [[package]] name = "bstr" -version = "1.9.1" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05efc5cfd9110c8416e471df0e96702d58690178e206e61b7173706673c93706" +checksum = "40723b8fb387abc38f4f4a37c09073622e41dd12327033091ef8950659e6dc0c" dependencies = [ "memchr", "serde", @@ -2128,9 +2137,9 @@ dependencies = [ [[package]] name = "built" -version = "0.7.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6a6c0b39c38fd754ac338b00a88066436389c0f029da5d37d1e01091d9b7c17" +checksum = "236e6289eda5a812bc6b53c3b024039382a2895fbbeef2d748b2931546d392c4" [[package]] name = "bumpalo" @@ -2146,22 +2155,22 @@ checksum = "5ce89b21cab1437276d2650d57e971f9d548a2d9037cc231abdc0562b97498ce" [[package]] name = "bytemuck" -version = "1.16.1" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b236fc92302c97ed75b38da1f4917b5cdda4984745740f153a5d3059e48d725e" +checksum = "94bbb0ad554ad961ddc5da507a12a29b14e4ae5bda06b19f575a3e6079d2e2ae" dependencies = [ "bytemuck_derive", ] [[package]] name = "bytemuck_derive" -version = "1.7.0" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ee891b04274a59bd38b412188e24b849617b2e45a0fd8d057deb63e7403761b" +checksum = "0cc8b54b395f2fcfbb3d90c47b01c7f444d94d05bdeb775811dec868ac3bbc26" dependencies = [ "proc-macro2 1.0.86", - "quote 1.0.36", - "syn 2.0.69", + "quote 1.0.37", + "syn 2.0.77", ] [[package]] @@ -2189,9 +2198,9 @@ dependencies = [ [[package]] name = "bytes" -version = "1.6.0" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" +checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50" [[package]] name = "bytesize" @@ -2237,9 +2246,9 @@ dependencies = [ [[package]] name = "calloop" -version = "0.12.4" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fba7adb4dd5aa98e5553510223000e7148f621165ec5f9acd7113f6ca4995298" +checksum = "b99da2f8558ca23c71f4fd15dc57c906239752dd27ff3c00a1d56b685b7cbfec" dependencies = [ "bitflags 2.6.0", "log", @@ -2251,9 +2260,9 @@ dependencies = [ [[package]] name = "calloop-wayland-source" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f0ea9b9476c7fad82841a8dbb380e2eae480c21910feba80725b46931ed8f02" +checksum = "95a66a987056935f7efce4ab5668920b5d0dac4a7c99991a67395f13702ddd20" dependencies = [ "calloop", "rustix", @@ -2263,9 +2272,9 @@ dependencies = [ [[package]] name = "camino" -version = "1.1.7" +version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0ec6b951b160caa93cc0c7b209e5a3bff7aae9062213451ac99493cd844c239" +checksum = "8b96ec4966b5813e2c0507c1f86115c8c5abaadc3980879c3424042a02fd1ad3" dependencies = [ "serde", ] @@ -2356,13 +2365,13 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.104" +version = "1.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74b6a57f98764a267ff415d50a25e6e166f3831a5071af4995296ea97d210490" +checksum = "b62ac837cdb5cb22e10a256099b4fc502b1dfe560cb282963a974d7abd80e476" dependencies = [ "jobserver", "libc", - "once_cell", + "shlex", ] [[package]] @@ -2462,9 +2471,9 @@ checksum = "4bfbf56724aa9eca8afa4fcfadeb479e722935bb2a0900c2d37e0cc477af0688" [[package]] name = "clipboard-win" -version = "5.3.1" +version = "5.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79f4473f5144e20d9aceaf2972478f06ddf687831eafeeb434fbaf0acc4144ad" +checksum = "15efe7a882b08f34e38556b14f2fb3daa98769d06c7f0c1b076dfd0d983bc892" dependencies = [ "error-code", ] @@ -2521,7 +2530,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ad899a1087a9296d5644792d7cb72b8e34c1bec8e7d4fbc002230169a6e8710c" dependencies = [ "proc-macro2 1.0.86", - "quote 1.0.36", + "quote 1.0.37", "syn 1.0.109", ] @@ -2544,7 +2553,7 @@ version = "4.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" dependencies = [ - "bytes 1.6.0", + "bytes 1.7.1", "memchr", ] @@ -2603,9 +2612,9 @@ checksum = "32b13ea120a812beba79e34316b3942a857c86ec1593cb34f27bb28272ce2cca" [[package]] name = "const_panic" -version = "0.2.8" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6051f239ecec86fde3410901ab7860d458d160371533842974fc61f96d15879b" +checksum = "7782af8f90fe69a4bb41e460abe1727d493403d8b2cc43201a3a3e906b24379f" [[package]] name = "const_soft_float" @@ -2615,9 +2624,9 @@ checksum = "87ca1caa64ef4ed453e68bb3db612e51cf1b2f5b871337f0fcab1c8f87cc3dff" [[package]] name = "constant_time_eq" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7144d30dcf0fafbce74250a3963025d8d52177934239851c917d29f1df280c2" +checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" [[package]] name = "constgebra" @@ -2681,7 +2690,7 @@ version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" dependencies = [ - "core-foundation-sys 0.8.6", + "core-foundation-sys 0.8.7", "libc", ] @@ -2693,9 +2702,9 @@ checksum = "b3a71ab494c0b5b860bdc8407ae08978052417070c2ced38573a9157ad75b8ac" [[package]] name = "core-foundation-sys" -version = "0.8.6" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "core-graphics" @@ -2738,7 +2747,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "321077172d79c662f64f5071a03120748d5bb652f5231570141be24cfcd2bace" dependencies = [ "bitflags 1.3.2", - "core-foundation-sys 0.8.6", + "core-foundation-sys 0.8.7", "coreaudio-sys", ] @@ -2782,7 +2791,7 @@ checksum = "74117836a5124f3629e4b474eed03e479abaf98988b4bb317e29f08cfe0e4116" dependencies = [ "alsa 0.6.0", "asio-sys", - "core-foundation-sys 0.8.6", + "core-foundation-sys 0.8.7", "coreaudio-rs 0.10.0", "jni 0.19.0", "js-sys", @@ -2807,8 +2816,8 @@ version = "0.15.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "873dab07c8f743075e57f524c583985fbaf745602acbe916a01539364369a779" dependencies = [ - "alsa 0.9.0", - "core-foundation-sys 0.8.6", + "alsa 0.9.1", + "core-foundation-sys 0.8.7", "coreaudio-rs 0.11.3", "dasp_sample", "jni 0.21.1", @@ -2975,9 +2984,9 @@ dependencies = [ [[package]] name = "curl-sys" -version = "0.4.73+curl-8.8.0" +version = "0.4.74+curl-8.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "450ab250ecf17227c39afb9a2dd9261dc0035cb80f2612472fc0c4aac2dcb84d" +checksum = "8af10b986114528fcdc4b63b6f5f021b7057618411046a4de2ba0f0149a097bf" dependencies = [ "cc", "libc", @@ -3025,7 +3034,7 @@ dependencies = [ "fnv", "ident_case", "proc-macro2 1.0.86", - "quote 1.0.36", + "quote 1.0.37", "strsim 0.10.0", "syn 1.0.109", ] @@ -3037,7 +3046,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c972679f83bdf9c42bd905396b6c3588a843a17f0f16dfcfa3e2c5d57441835" dependencies = [ "darling_core", - "quote 1.0.36", + "quote 1.0.37", "syn 1.0.109", ] @@ -3179,8 +3188,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fd31dbbd9743684d339f907a87fe212cb7b51d75b9e8e74181fe363199ee9b47" dependencies = [ "proc-macro2 1.0.86", - "quote 1.0.36", - "syn 2.0.69", + "quote 1.0.37", + "syn 2.0.77", ] [[package]] @@ -3190,8 +3199,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b36f2ddfca91251bed7f931f24b192e4eaf0a0e0fa70cf81cfb1416a1973620e" dependencies = [ "proc-macro2 1.0.86", - "quote 1.0.36", - "syn 2.0.69", + "quote 1.0.37", + "syn 2.0.77", ] [[package]] @@ -3294,9 +3303,9 @@ dependencies = [ [[package]] name = "euclid" -version = "0.22.10" +version = "0.22.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0f0eb73b934648cd7a4a61f1b15391cd95dab0b4da6e2e66c2a072c144b4a20" +checksum = "ad9cdb4b747e485a12abb0e6566612956c7a1bafa3bdb8d682c5b6d403589e48" dependencies = [ "num-traits", ] @@ -3355,7 +3364,7 @@ dependencies = [ "pitch_calc", "ringbuf", "time_calc", - "tokio 1.38.0", + "tokio 1.40.0", "walkdir", ] @@ -3392,16 +3401,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aa4da3c766cd7a0db8242e326e9e4e081edd567072893ed320008189715366a4" dependencies = [ "proc-macro2 1.0.86", - "quote 1.0.36", + "quote 1.0.37", "syn 1.0.109", "synstructure", ] [[package]] name = "fastrand" -version = "2.1.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" +checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" [[package]] name = "fdeflate" @@ -3414,9 +3423,9 @@ dependencies = [ [[package]] name = "ffmpeg-next" -version = "7.0.2" +version = "7.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddfce5242643c8a57b5a44b7e933ccbde85f9508d1379e578e97eee4a9d4334b" +checksum = "19a340e3d664ad5f530147cd6d4a86ece739a829fe2d81c369389ef903bd96f6" dependencies = [ "bitflags 2.6.0", "ffmpeg-sys-next", @@ -3425,9 +3434,9 @@ dependencies = [ [[package]] name = "ffmpeg-sys-next" -version = "7.0.0" +version = "7.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "972a460dd8e901b737ce0482bf71a837e1751e3dd7c8f8b0a4ead808e7f174a5" +checksum = "db1b7546e70609ead8c06b2b4c618a1ba352364675f81608f431dd4f321fe3f1" dependencies = [ "bindgen", "cc", @@ -3448,14 +3457,14 @@ dependencies = [ [[package]] name = "filetime" -version = "0.2.23" +version = "0.2.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ee447700ac8aa0b2f2bd7bc4462ad686ba06baa6727ac149a2d6277f0d240fd" +checksum = "35c0522e981e68cbfa8c3f978441a5f34b30b96e146b33cd3359176b50fe8586" dependencies = [ "cfg-if 1.0.0", "libc", - "redox_syscall 0.4.1", - "windows-sys 0.52.0", + "libredox 0.1.3", + "windows-sys 0.59.0", ] [[package]] @@ -3484,13 +3493,13 @@ checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" [[package]] name = "flate2" -version = "1.0.30" +version = "1.0.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f54427cfd1c7829e2a139fcefea601bf088ebca651d2bf53ebc600eac295dae" +checksum = "324a1be68054ef05ad64b861cc9eaf1d623d2d8cb25b4bf2cb9cdd902b4bf253" dependencies = [ "crc32fast", "libz-sys", - "miniz_oxide 0.7.4", + "miniz_oxide 0.8.0", ] [[package]] @@ -3581,8 +3590,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" dependencies = [ "proc-macro2 1.0.86", - "quote 1.0.36", - "syn 2.0.69", + "quote 1.0.37", + "syn 2.0.77", ] [[package]] @@ -3731,8 +3740,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2 1.0.86", - "quote 1.0.36", - "syn 2.0.69", + "quote 1.0.37", + "syn 2.0.77", ] [[package]] @@ -3849,22 +3858,22 @@ dependencies = [ [[package]] name = "gilrs" -version = "0.10.8" +version = "0.10.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f226b8f4d9bc7da93de8efd8747c6b1086409ca3f4b6d51e9a7f5461a9183fe" +checksum = "dfb8c78963a8856a5b10015c9349176ff5edbc8095384d52aada467a848bc03a" dependencies = [ "fnv", "gilrs-core", "log", - "uuid 1.9.1", + "uuid 1.10.0", "vec_map", ] [[package]] name = "gilrs-core" -version = "0.5.12" +version = "0.5.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b922f294d9f062af517ea0bd0a036ddcf11c2842211c2f9c71a3ceee859e10b6" +checksum = "732dadc05170599ddec9a89653f10d7a2af54da9181b3fa6e2bd49907ec8f7e4" dependencies = [ "core-foundation 0.9.4", "inotify 0.10.2", @@ -3874,18 +3883,18 @@ dependencies = [ "libudev-sys", "log", "nix 0.29.0", - "uuid 1.9.1", + "uuid 1.10.0", "vec_map", "wasm-bindgen", "web-sys", - "windows 0.57.0", + "windows 0.58.0", ] [[package]] name = "gimli" -version = "0.29.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40ecd4077b5ae9fd2e9e169b102c6c330d0605168eb0e8bf79952b256dbefffd" +checksum = "32085ea23f3234fc7846555e85283ba4de91e21016dc0455a16286d87a292d64" [[package]] name = "git2" @@ -3956,9 +3965,9 @@ checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" [[package]] name = "globset" -version = "0.4.14" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57da3b9b5b85bd66f31093f8c408b90a74431672542466497dcbdfdc02034be1" +checksum = "15f1ce686646e7f1e19bf7d5533fe443a45dbfb990e00629110797578b42fb19" dependencies = [ "aho-corasick", "bstr", @@ -3999,8 +4008,8 @@ checksum = "14070e711538afba5d6c807edb74bcb84e5dbb9211a3bf5dea0dfab5b24f4c51" dependencies = [ "inflections", "proc-macro2 1.0.86", - "quote 1.0.36", - "syn 2.0.69", + "quote 1.0.37", + "syn 2.0.77", ] [[package]] @@ -4088,7 +4097,7 @@ version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b62d5865c036cb1393e23c50693df631d3f5d7bcca4c04fe4cc0fd592e74a782" dependencies = [ - "euclid 0.22.10", + "euclid 0.22.11", "svg_fmt", ] @@ -4333,7 +4342,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" dependencies = [ "android_system_properties", - "core-foundation-sys 0.8.6", + "core-foundation-sys 0.8.7", "iana-time-zone-haiku", "js-sys", "wasm-bindgen", @@ -4389,9 +4398,9 @@ dependencies = [ [[package]] name = "ignore" -version = "0.4.22" +version = "0.4.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b46810df39e66e925525d6e38ce1e7f6e1d208f72dc39757880fcb66e2c58af1" +checksum = "6d89fd380afde86567dfba715db065673989d6253f42b88179abd3eae47bda4b" dependencies = [ "crossbeam-deque 0.8.5", "globset", @@ -4484,12 +4493,12 @@ dependencies = [ [[package]] name = "image-webp" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d730b085583c4d789dfd07fdcf185be59501666a90c97c40162b37e4fdad272d" +checksum = "f79afb8cbee2ef20f59ccd477a218c12a93943d075b492015ecb1bb81f8ee904" dependencies = [ "byteorder-lite", - "thiserror", + "quick-error 2.0.1", ] [[package]] @@ -4504,7 +4513,7 @@ version = "2.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4419f022e55cc63d5bbd6b44b71e1d226b9c9480a47824c706e9d54e5c40c5eb" dependencies = [ - "arrayvec 0.7.4", + "arrayvec 0.7.6", ] [[package]] @@ -4519,9 +4528,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.2.6" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" +checksum = "68b900aa2f7301e21c36462b170ee99994de34dff39a4a6a528e80e7376d07e5" dependencies = [ "equivalent", "hashbrown 0.14.5", @@ -4581,8 +4590,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c34819042dc3d3971c46c2190835914dfbe0c3c13f61449b2997f4e9722dfa60" dependencies = [ "proc-macro2 1.0.86", - "quote 1.0.36", - "syn 2.0.69", + "quote 1.0.37", + "syn 2.0.77", ] [[package]] @@ -4591,7 +4600,7 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "617ee6cf8e3f66f3b4ea67a4058564628cde41901316e19f559e14c7c72c5e7b" dependencies = [ - "core-foundation-sys 0.8.6", + "core-foundation-sys 0.8.7", "mach2", ] @@ -4683,9 +4692,9 @@ checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" [[package]] name = "jobserver" -version = "0.1.31" +version = "0.1.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2b099aaa34a9751c5bf0878add70444e1ed2dd73f347be99003d4577277de6e" +checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" dependencies = [ "libc", ] @@ -4707,9 +4716,9 @@ checksum = "f5d4a7da358eff58addd2877a45865158f0d78c911d43a5784ceb7bbf52833b0" [[package]] name = "js-sys" -version = "0.3.69" +version = "0.3.70" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" +checksum = "1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a" dependencies = [ "wasm-bindgen", ] @@ -4821,9 +4830,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.155" +version = "0.2.158" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" +checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439" [[package]] name = "libflate" @@ -4864,9 +4873,9 @@ dependencies = [ [[package]] name = "libloading" -version = "0.8.4" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e310b3a6b5907f99202fcdb4960ff45b93735d7c7d96b760fcff8db2dc0e103d" +checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4" dependencies = [ "cfg-if 1.0.0", "windows-targets 0.52.6", @@ -4899,6 +4908,17 @@ dependencies = [ "redox_syscall 0.4.1", ] +[[package]] +name = "libredox" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" +dependencies = [ + "bitflags 2.6.0", + "libc", + "redox_syscall 0.5.3", +] + [[package]] name = "libssh2-sys" version = "0.2.23" @@ -4925,9 +4945,9 @@ dependencies = [ [[package]] name = "libz-sys" -version = "1.1.18" +version = "1.1.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c15da26e5af7e25c90b37a2d75cdbf940cf4a55316de9d84c679c9b8bfabf82e" +checksum = "d2d16453e800a8cf6dd2fc3eb4bc99b786a9b90c663b8559a5b1a041bf89e472" dependencies = [ "cc", "libc", @@ -5024,8 +5044,8 @@ version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "edecfb8d234a2b0be031ab02ebcdd9f3b9ee418fb35e265f7a540a48d197bff9" dependencies = [ - "arrayvec 0.7.4", - "euclid 0.22.10", + "arrayvec 0.7.6", + "euclid 0.22.11", "num-traits", ] @@ -5099,7 +5119,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ea1f30cedd69f0a2954655f7188c6a834246d2bcf1e315e2ac40c4b24dc9519" dependencies = [ "cfg-if 1.0.0", - "rayon", ] [[package]] @@ -5217,6 +5236,15 @@ dependencies = [ "simd-adler32", ] +[[package]] +name = "miniz_oxide" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" +dependencies = [ + "adler2", +] + [[package]] name = "mio" version = "0.6.23" @@ -5248,6 +5276,18 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "mio" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" +dependencies = [ + "hermit-abi 0.3.9", + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", + "windows-sys 0.52.0", +] + [[package]] name = "miow" version = "0.2.2" @@ -5299,7 +5339,7 @@ checksum = "ae585df4b6514cf8842ac0f1ab4992edc975892704835b549cf818dc0191249e" dependencies = [ "bit-set 0.5.3", "bitflags 2.6.0", - "indexmap 2.2.6", + "indexmap 2.5.0", "log", "num-traits", "pp-rs", @@ -5314,13 +5354,13 @@ version = "22.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8bd5a652b6faf21496f2cfd88fc49989c8db0825d1f6746b1a71a6ede24a63ad" dependencies = [ - "arrayvec 0.7.4", + "arrayvec 0.7.6", "bit-set 0.6.0", "bitflags 2.6.0", "cfg_aliases 0.1.1", "codespan-reporting", "hexf-parse", - "indexmap 2.2.6", + "indexmap 2.5.0", "log", "petgraph 0.6.5", "pp-rs", @@ -5329,7 +5369,7 @@ dependencies = [ "spirv 0.3.0+sdk-1.3.268.0", "termcolor", "thiserror", - "unicode-xid 0.2.4", + "unicode-xid 0.2.5", ] [[package]] @@ -5341,7 +5381,7 @@ dependencies = [ "bit-set 0.5.3", "codespan-reporting", "data-encoding", - "indexmap 2.2.6", + "indexmap 2.5.0", "naga 22.1.0", "once_cell", "regex", @@ -5386,8 +5426,8 @@ dependencies = [ "rusttype", "serde", "serde_json", - "tokio 1.38.0", - "toml 0.8.14", + "tokio 1.40.0", + "toml 0.8.19", "walkdir", "web-sys", "wgpu", @@ -5455,7 +5495,7 @@ dependencies = [ "image 0.25.2", "instant", "num_cpus", - "tokio 1.38.0", + "tokio 1.40.0", "wgpu", ] @@ -5506,7 +5546,7 @@ dependencies = [ "jni-sys", "log", "ndk-sys 0.5.0+25.2.9519653", - "num_enum 0.7.2", + "num_enum 0.7.3", "thiserror", ] @@ -5520,7 +5560,7 @@ dependencies = [ "jni-sys", "log", "ndk-sys 0.6.0+11769913", - "num_enum 0.7.2", + "num_enum 0.7.3", "raw-window-handle", "thiserror", ] @@ -5555,7 +5595,7 @@ dependencies = [ "darling", "proc-macro-crate 1.3.1", "proc-macro2 1.0.86", - "quote 1.0.36", + "quote 1.0.37", "syn 1.0.109", ] @@ -5799,7 +5839,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "876a53fff98e03a936a674b29568b0e605f06b29372c2489ff4de23f1949743d" dependencies = [ "proc-macro2 1.0.86", - "quote 1.0.36", + "quote 1.0.37", "syn 1.0.109", ] @@ -5810,8 +5850,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2 1.0.86", - "quote 1.0.36", - "syn 2.0.69", + "quote 1.0.37", + "syn 2.0.77", ] [[package]] @@ -5899,11 +5939,11 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02339744ee7253741199f897151b38e72257d13802d4ee837285cc2990a90845" +checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179" dependencies = [ - "num_enum_derive 0.7.2", + "num_enum_derive 0.7.3", ] [[package]] @@ -5914,20 +5954,20 @@ checksum = "dcbff9bc912032c62bf65ef1d5aea88983b420f4f839db1e9b0c281a25c9c799" dependencies = [ "proc-macro-crate 1.3.1", "proc-macro2 1.0.86", - "quote 1.0.36", + "quote 1.0.37", "syn 1.0.109", ] [[package]] name = "num_enum_derive" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "681030a937600a36906c185595136d26abfebb4aa9c65701cefcaf8578bb982b" +checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" dependencies = [ - "proc-macro-crate 3.1.0", + "proc-macro-crate 3.2.0", "proc-macro2 1.0.86", - "quote 1.0.36", - "syn 2.0.69", + "quote 1.0.37", + "syn 2.0.77", ] [[package]] @@ -6144,9 +6184,9 @@ dependencies = [ [[package]] name = "object" -version = "0.36.1" +version = "0.36.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "081b846d1d56ddfc18fdf1a922e4f6e07a11768ea1b92dec44e42b72712ccfce" +checksum = "084f1a5821ac4c651660a94a7153d27ac9d8a53736203f58b31945ded098070a" dependencies = [ "memchr", ] @@ -6242,9 +6282,9 @@ dependencies = [ [[package]] name = "openssl" -version = "0.10.64" +version = "0.10.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95a0481286a310808298130d22dd1fef0fa571e05a8f44ec801801e84b216b1f" +checksum = "9529f4786b70a3e8c61e11179af17ab6188ad8d0ded78c5529441ed39d4bd9c1" dependencies = [ "bitflags 2.6.0", "cfg-if 1.0.0", @@ -6262,8 +6302,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2 1.0.86", - "quote 1.0.36", - "syn 2.0.69", + "quote 1.0.37", + "syn 2.0.77", ] [[package]] @@ -6274,9 +6314,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-sys" -version = "0.9.102" +version = "0.9.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c597637d56fbc83893a35eb0dd04b2b8e7a50c91e64e9493e398b5df4fb45fa2" +checksum = "7f9e8deee91df40a943c71b917e5874b951d32a802526c85721ce3b776c929d6" dependencies = [ "cc", "libc", @@ -6290,7 +6330,7 @@ version = "0.3.47" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "52f0d54bde9774d3a51dcf281a5def240c71996bc6ca05d2c847ec8b2b216166" dependencies = [ - "libredox", + "libredox 0.0.2", ] [[package]] @@ -6314,14 +6354,14 @@ version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "490d3a563d3122bf7c911a59b0add9389e5ec0f5f0c3ac6b91ff235a0e6a7f90" dependencies = [ - "ttf-parser 0.24.0", + "ttf-parser 0.24.1", ] [[package]] name = "parking" -version = "2.2.0" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae" +checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" [[package]] name = "parking_lot" @@ -6392,7 +6432,7 @@ checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ "cfg-if 1.0.0", "libc", - "redox_syscall 0.5.2", + "redox_syscall 0.5.3", "smallvec 1.13.2", "windows-targets 0.52.6", ] @@ -6450,7 +6490,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" dependencies = [ "fixedbitset 0.4.2", - "indexmap 2.2.6", + "indexmap 2.5.0", "serde", "serde_derive", ] @@ -6489,8 +6529,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2 1.0.86", - "quote 1.0.36", - "syn 2.0.69", + "quote 1.0.37", + "syn 2.0.77", ] [[package]] @@ -6507,9 +6547,9 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "piper" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae1d5c74c9876f070d3e8fd503d748c7d974c3e48da8f41350fa5222ef9b4391" +checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" dependencies = [ "atomic-waker", "fastrand", @@ -6566,9 +6606,9 @@ checksum = "b18befed8bc2b61abc79a457295e7e838417326da1586050b919414073977f19" [[package]] name = "polling" -version = "3.7.2" +version = "3.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3ed00ed3fbf728b5816498ecd316d1716eecaced9c0c8d2c5a6740ca214985b" +checksum = "cc2790cd301dec6cd3b7a025e4815cf825724a51c98dccfe6a3e55f05ffb6511" dependencies = [ "cfg-if 1.0.0", "concurrent-queue", @@ -6576,7 +6616,7 @@ dependencies = [ "pin-project-lite", "rustix", "tracing", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -6585,14 +6625,17 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bb458bb7f6e250e6eb79d5026badc10a3ebb8f9a15d1fff0f13d17c71f4d6dee" dependencies = [ - "unicode-xid 0.2.4", + "unicode-xid 0.2.5", ] [[package]] name = "ppv-lite86" -version = "0.2.17" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" +checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +dependencies = [ + "zerocopy 0.7.35", +] [[package]] name = "presser" @@ -6608,12 +6651,12 @@ checksum = "f0f73cdaf19b52e6143685c3606206e114a4dfa969d6b14ec3894c88eb38bd4b" [[package]] name = "prettyplease" -version = "0.2.20" +version = "0.2.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f12335488a2f3b0a83b14edad48dca9879ce89b2edd10e80237e4e852dd645e" +checksum = "479cf940fbbb3426c32c5d5176f62ad57549a0bb84773423ba8be9d089f5faba" dependencies = [ "proc-macro2 1.0.86", - "syn 2.0.69", + "syn 2.0.77", ] [[package]] @@ -6628,11 +6671,11 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "3.1.0" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" +checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b" dependencies = [ - "toml_edit 0.21.1", + "toml_edit 0.22.20", ] [[package]] @@ -6668,8 +6711,8 @@ version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8021cf59c8ec9c432cfc2526ac6b8aa508ecaf29cd415f271b8406c1b851c3fd" dependencies = [ - "quote 1.0.36", - "syn 2.0.69", + "quote 1.0.37", + "syn 2.0.77", ] [[package]] @@ -6716,9 +6759,9 @@ checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3" [[package]] name = "quick-xml" -version = "0.34.0" +version = "0.36.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f24d770aeca0eacb81ac29dfbc55ebcc09312fdd1f8bbecdc7e4a84e000e3b4" +checksum = "96a05e2e8efddfa51a84ca47cec303fac86c8541b686d37cac5efc0e094417bc" dependencies = [ "memchr", ] @@ -6734,18 +6777,18 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.36" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" dependencies = [ "proc-macro2 1.0.86", ] [[package]] name = "radsort" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17fd96390ed3feda12e1dfe2645ed587e0bea749e319333f104a33ff62f77a0b" +checksum = "019b4b213425016d7d84a153c4c73afb0946fbb4840e4eece7ba8848b9d6da22" [[package]] name = "rand" @@ -6995,7 +7038,7 @@ checksum = "cd87ce80a7665b1cce111f8a16c1f3929f6547ce91ade6addf4ec86a8dda5ce9" dependencies = [ "arbitrary", "arg_enum_proc_macro", - "arrayvec 0.7.4", + "arrayvec 0.7.6", "av1-grain", "bitstream-io", "built", @@ -7024,16 +7067,15 @@ dependencies = [ [[package]] name = "ravif" -version = "0.11.7" +version = "0.11.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67376f469e7e7840d0040bbf4b9b3334005bb167f814621326e4c7ab8cd6e944" +checksum = "a8f0bfd976333248de2078d350bfdf182ff96e168a24d23d2436cef320dd4bdd" dependencies = [ "avif-serialize", "imgref", "loop9", "quick-error 2.0.1", "rav1e", - "rayon", "rgb", ] @@ -7129,18 +7171,18 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c82cf8cff14456045f55ec4241383baeff27af886adb72ffb2162f99911de0fd" +checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4" dependencies = [ "bitflags 2.6.0", ] [[package]] name = "regex" -version = "1.10.5" +version = "1.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b91213439dad192326a0d7c6ee3955910425f441d7038e0d6933b0aec5c4517f" +checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619" dependencies = [ "aho-corasick", "memchr", @@ -7244,9 +7286,9 @@ dependencies = [ [[package]] name = "rgb" -version = "0.8.40" +version = "0.8.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7439be6844e40133eda024efd85bf07f59d0dd2f59b10c00dd6cfb92cc5c741" +checksum = "57397d16646700483b67d2dd6511d79318f9d057fdbd21a4066aeac8b41d310a" dependencies = [ "bytemuck", ] @@ -7394,9 +7436,9 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.34" +version = "0.38.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" +checksum = "3f55e80d50763938498dd5ebb18647174e0c76dc38c5505294bb224624f30f36" dependencies = [ "bitflags 2.6.0", "errno", @@ -7446,9 +7488,9 @@ dependencies = [ [[package]] name = "ruzstd" -version = "0.7.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5022b253619b1ba797f243056276bed8ed1a73b0f5a7ce7225d524067644bf8f" +checksum = "1c8b8f3d26bd9f945e5cbae77f7cdfbf37af9a66956f1115eb4516e45df519f4" dependencies = [ "byteorder", "twox-hash", @@ -7477,11 +7519,11 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.23" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" +checksum = "e9aaafd5a2b6e3d657ff009d82fbd630b6bd54dd4eb06f21693925cdf80f9b8b" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -7504,9 +7546,9 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "sctk-adwaita" -version = "0.9.1" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7555fcb4f753d095d734fdefebb0ad8c98478a21db500492d87c55913d3b0086" +checksum = "b6277f0217056f77f1d8f49f2950ac6c278c0d607c45f5ee99328d792ede24ec" dependencies = [ "ab_glyph", "log", @@ -7517,24 +7559,24 @@ dependencies = [ [[package]] name = "security-framework" -version = "2.11.0" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c627723fd09706bacdb5cf41499e95098555af3c3c29d014dc3c458ef6be11c0" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ "bitflags 2.6.0", "core-foundation 0.9.4", - "core-foundation-sys 0.8.6", + "core-foundation-sys 0.8.7", "libc", "security-framework-sys", ] [[package]] name = "security-framework-sys" -version = "2.11.0" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "317936bbbd05227752583946b9e66d7ce3b489f84e11a94a510b4437fef407d7" +checksum = "75da29fe9b9b08fe9d6b22b5b4bcbc75d8db3aa31e639aa56bb62e9d46bfceaf" dependencies = [ - "core-foundation-sys 0.8.6", + "core-foundation-sys 0.8.7", "libc", ] @@ -7577,22 +7619,22 @@ checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" [[package]] name = "serde" -version = "1.0.204" +version = "1.0.210" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc76f558e0cbb2a839d37354c575f1dc3fdc6546b5be373ba43d95f231bf7c12" +checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.204" +version = "1.0.210" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0cd7e117be63d3c3678776753929474f3b04a43a080c744d6b0ae2a8c28e222" +checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" dependencies = [ "proc-macro2 1.0.86", - "quote 1.0.36", - "syn 2.0.69", + "quote 1.0.37", + "syn 2.0.77", ] [[package]] @@ -7606,20 +7648,21 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.120" +version = "1.0.128" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e0d21c9a8cae1235ad58a00c11cb40d4b1e5c784f1ef2c537876ed6ffd8b7c5" +checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" dependencies = [ "itoa 1.0.11", + "memchr", "ryu", "serde", ] [[package]] name = "serde_spanned" -version = "0.6.6" +version = "0.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79e674e01f999af37c49f70a6ede167a8a60b2503e56c5599532a65baa5969a0" +checksum = "eb5b1b31579f3811bf615c144393417496f152e12ac8b7663bf664f4a815306d" dependencies = [ "serde", ] @@ -7686,7 +7729,7 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "95890f873bec569a0362c235787f3aca6e1e887302ba4840839bcc6459c42da6" dependencies = [ - "quote 1.0.36", + "quote 1.0.37", ] [[package]] @@ -7771,9 +7814,9 @@ checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "smithay-client-toolkit" -version = "0.18.1" +version = "0.19.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "922fd3eeab3bd820d76537ce8f582b1cf951eceb5475c28500c7457d9d17f53a" +checksum = "3457dea1f0eb631b4034d61d4d8c32074caa6cd1ab2d59f2327bd8461e2c0016" dependencies = [ "bitflags 2.6.0", "calloop", @@ -7968,18 +8011,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" dependencies = [ "proc-macro2 1.0.86", - "quote 1.0.36", + "quote 1.0.37", "unicode-ident", ] [[package]] name = "syn" -version = "2.0.69" +version = "2.0.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "201fcda3845c23e8212cd466bfebf0bd20694490fc0356ae8e428e0824a915a6" +checksum = "9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed" dependencies = [ "proc-macro2 1.0.86", - "quote 1.0.36", + "quote 1.0.37", "unicode-ident", ] @@ -7990,9 +8033,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" dependencies = [ "proc-macro2 1.0.86", - "quote 1.0.36", + "quote 1.0.37", "syn 1.0.109", - "unicode-xid 0.2.4", + "unicode-xid 0.2.5", ] [[package]] @@ -8010,7 +8053,7 @@ version = "0.31.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "355dbe4f8799b304b05e1b0f05fc59b2a18d36645cf169607da45bde2f69a1be" dependencies = [ - "core-foundation-sys 0.8.6", + "core-foundation-sys 0.8.7", "libc", "memchr", "ntapi", @@ -8026,17 +8069,17 @@ dependencies = [ "cfg-expr", "heck", "pkg-config", - "toml 0.8.14", + "toml 0.8.19", "version-compare", ] [[package]] name = "taffy" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8b61630cba2afd2c851821add2e1bb1b7851a2436e839ab73b56558b009035e" +checksum = "9cb893bff0f80ae17d3a57e030622a967b8dbc90e38284d9b4b1442e23873c94" dependencies = [ - "arrayvec 0.7.4", + "arrayvec 0.7.6", "grid", "num-traits", "serde", @@ -8061,20 +8104,21 @@ dependencies = [ [[package]] name = "target-lexicon" -version = "0.12.14" +version = "0.12.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f" +checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" [[package]] name = "tempfile" -version = "3.10.1" +version = "3.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" +checksum = "04cbcdd0c794ebb0d4cf35e88edd2f7d2c4c3e9a5a6dab322839b321c6a87a64" dependencies = [ "cfg-if 1.0.0", "fastrand", + "once_cell", "rustix", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -8111,8 +8155,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" dependencies = [ "proc-macro2 1.0.86", - "quote 1.0.36", - "syn 2.0.69", + "quote 1.0.37", + "syn 2.0.77", ] [[package]] @@ -8176,7 +8220,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "83d13394d44dae3207b52a326c0c85a8bf87f1541f23b0d143811088497b09ab" dependencies = [ "arrayref", - "arrayvec 0.7.4", + "arrayvec 0.7.6", "bytemuck", "cfg-if 1.0.0", "log", @@ -8196,9 +8240,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.7.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce6b6a2fb3a985e99cebfaefa9faa3024743da73304ca1c683a36429613d3d22" +checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" dependencies = [ "tinyvec_macros", ] @@ -8230,21 +8274,20 @@ dependencies = [ [[package]] name = "tokio" -version = "1.38.0" +version = "1.40.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba4f4a02a7a80d6f274636f0aa95c7e383b912d41fe721a31f29e29698585a4a" +checksum = "e2b070231665d27ad9ec9b8df639893f46727666c6767db40317fbe920a5d998" dependencies = [ "backtrace", - "bytes 1.6.0", + "bytes 1.7.1", "libc", - "mio 0.8.11", - "num_cpus", + "mio 1.0.2", "parking_lot 0.12.3", "pin-project-lite", "signal-hook-registry", "socket2", "tokio-macros", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] @@ -8291,13 +8334,13 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "2.3.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f5ae998a069d4b5aba8ee9dad856af7d520c3699e6159b185c2acd48155d39a" +checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2 1.0.86", - "quote 1.0.36", - "syn 2.0.69", + "quote 1.0.37", + "syn 2.0.77", ] [[package]] @@ -8383,21 +8426,21 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.14" +version = "0.8.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f49eb2ab21d2f26bd6db7bf383edc527a7ebaee412d17af4d40fdccd442f335" +checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.22.14", + "toml_edit 0.22.20", ] [[package]] name = "toml_datetime" -version = "0.6.6" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4badfd56924ae69bcc9039335b2e017639ce3f9b001c393c1b2d1ef846ce2cbf" +checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" dependencies = [ "serde", ] @@ -8419,33 +8462,22 @@ version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ - "indexmap 2.2.6", - "toml_datetime", - "winnow 0.5.40", -] - -[[package]] -name = "toml_edit" -version = "0.21.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" -dependencies = [ - "indexmap 2.2.6", + "indexmap 2.5.0", "toml_datetime", "winnow 0.5.40", ] [[package]] name = "toml_edit" -version = "0.22.14" +version = "0.22.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f21c7aaf97f1bd9ca9d4f9e73b0a6c74bd5afef56f2bc931943a6e1c37e04e38" +checksum = "583c44c02ad26b0c3f3066fe629275e50627026c51ac2e595cca4c230ce1ce1d" dependencies = [ - "indexmap 2.2.6", + "indexmap 2.5.0", "serde", "serde_spanned", "toml_datetime", - "winnow 0.6.13", + "winnow 0.6.18", ] [[package]] @@ -8466,8 +8498,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2 1.0.86", - "quote 1.0.36", - "syn 2.0.69", + "quote 1.0.37", + "syn 2.0.77", ] [[package]] @@ -8559,9 +8591,9 @@ checksum = "2c591d83f69777866b9126b24c6dd9a18351f177e49d625920d19f989fd31cf8" [[package]] name = "ttf-parser" -version = "0.24.0" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8686b91785aff82828ed725225925b33b4fde44c4bb15876e5f7c832724c420a" +checksum = "5be21190ff5d38e8b4a2d3b6a3ae57f612cc39c96e83cedeaf7abc338a8bac4a" [[package]] name = "twox-hash" @@ -8575,9 +8607,9 @@ dependencies = [ [[package]] name = "typeid" -version = "1.0.0" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "059d83cc991e7a42fc37bd50941885db0888e34209f8cfd9aab07ddec03bc9cf" +checksum = "0e13db2e0ccd5e14a544e8a246ba2312cd25223f616442d7f2cb0e3db614236e" [[package]] name = "typenum" @@ -8665,9 +8697,9 @@ checksum = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" [[package]] name = "unicode-xid" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" +checksum = "229730647fbc343e3a80e463c1db7f78f3855d3f3739bee0dda773c9a037c90a" [[package]] name = "unreachable" @@ -8732,9 +8764,9 @@ dependencies = [ [[package]] name = "uuid" -version = "1.9.1" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5de17fd2f7da591098415cff336e12965a28061ddace43b59cb3c430179c9439" +checksum = "81dfa00651efa65069b0b6b651f4aaa31ba9e3c3ce0137aaad053604ee7e0314" dependencies = [ "getrandom 0.2.15", "serde", @@ -8777,9 +8809,9 @@ checksum = "852e951cb7832cb45cb1169900d19760cfa39b82bc0ea9c0e5a14ae88411c98b" [[package]] name = "version_check" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "video-rs" @@ -8816,7 +8848,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2e369bee1b05d510a7b4ed645f5faa90619e05437111783ea5848f28d97d3c2e" dependencies = [ "proc-macro2 1.0.86", - "quote 1.0.36", + "quote 1.0.37", ] [[package]] @@ -8860,34 +8892,35 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" +checksum = "a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5" dependencies = [ "cfg-if 1.0.0", + "once_cell", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" +checksum = "9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2 1.0.86", - "quote 1.0.36", - "syn 2.0.69", + "quote 1.0.37", + "syn 2.0.77", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.42" +version = "0.4.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" +checksum = "61e9300f63a621e96ed275155c108eb6f843b6a26d053f122ab69724559dc8ed" dependencies = [ "cfg-if 1.0.0", "js-sys", @@ -8897,38 +8930,38 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" +checksum = "585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf" dependencies = [ - "quote 1.0.36", + "quote 1.0.37", "wasm-bindgen-macro-support", ] [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" +checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" dependencies = [ "proc-macro2 1.0.86", - "quote 1.0.36", - "syn 2.0.69", + "quote 1.0.37", + "syn 2.0.77", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" +checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484" [[package]] name = "wayland-backend" -version = "0.3.5" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "269c04f203640d0da2092d1b8d89a2d081714ae3ac2f1b53e99f205740517198" +checksum = "056535ced7a150d45159d3a8dc30f91a2e2d588ca0b23f70e56033622b8016f6" dependencies = [ "cc", "downcast-rs", @@ -8940,9 +8973,9 @@ dependencies = [ [[package]] name = "wayland-client" -version = "0.31.4" +version = "0.31.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08bd0f46c069d3382a36c8666c1b9ccef32b8b04f41667ca1fef06a1adcc2982" +checksum = "e3f45d1222915ef1fd2057220c1d9d9624b7654443ea35c3877f7a52bd0a5a2d" dependencies = [ "bitflags 2.6.0", "rustix", @@ -8963,9 +8996,9 @@ dependencies = [ [[package]] name = "wayland-cursor" -version = "0.31.4" +version = "0.31.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09414bcf0fd8d9577d73e9ac4659ebc45bcc9cff1980a350543ad8e50ee263b2" +checksum = "3a94697e66e76c85923b0d28a0c251e8f0666f58fc47d316c0f4da6da75d37cb" dependencies = [ "rustix", "wayland-client", @@ -8974,9 +9007,9 @@ dependencies = [ [[package]] name = "wayland-protocols" -version = "0.31.2" +version = "0.32.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f81f365b8b4a97f422ac0e8737c438024b5951734506b0e1d775c73030561f4" +checksum = "2b5755d77ae9040bb872a25026555ce4cb0ae75fd923e90d25fba07d81057de0" dependencies = [ "bitflags 2.6.0", "wayland-backend", @@ -8986,9 +9019,9 @@ dependencies = [ [[package]] name = "wayland-protocols-plasma" -version = "0.2.0" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23803551115ff9ea9bce586860c5c5a971e360825a0309264102a9495a5ff479" +checksum = "8a0a41a6875e585172495f7a96dfa42ca7e0213868f4f15c313f7c33221a7eff" dependencies = [ "bitflags 2.6.0", "wayland-backend", @@ -8999,9 +9032,9 @@ dependencies = [ [[package]] name = "wayland-protocols-wlr" -version = "0.2.0" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad1f61b76b6c2d8742e10f9ba5c3737f6530b4c243132c2a2ccc8aa96fe25cd6" +checksum = "dad87b5fd1b1d3ca2f792df8f686a2a11e3fe1077b71096f7a175ab699f89109" dependencies = [ "bitflags 2.6.0", "wayland-backend", @@ -9012,20 +9045,20 @@ dependencies = [ [[package]] name = "wayland-scanner" -version = "0.31.3" +version = "0.31.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edf466fc49a4feb65a511ca403fec3601494d0dee85dbf37fff6fa0dd4eec3b6" +checksum = "597f2001b2e5fc1121e3d5b9791d3e78f05ba6bfa4641053846248e3a13661c3" dependencies = [ "proc-macro2 1.0.86", "quick-xml", - "quote 1.0.36", + "quote 1.0.37", ] [[package]] name = "wayland-sys" -version = "0.31.3" +version = "0.31.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a6754825230fa5b27bafaa28c30b3c9e72c55530581220cef401fa422c0fae7" +checksum = "efa8ac0d8e8ed3e3b5c9fc92c7881406a268e11555abe36493efabe649a29e09" dependencies = [ "dlib", "log", @@ -9035,9 +9068,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.69" +version = "0.3.70" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" +checksum = "26fdeaafd9bd129f65e7c031593c24d62186301e0c72c8978fa1678be7d532c0" dependencies = [ "js-sys", "wasm-bindgen", @@ -9083,7 +9116,7 @@ version = "22.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e1d1c4ba43f80542cf63a0a6ed3134629ae73e8ab51e4b765a67f3aa062eb433" dependencies = [ - "arrayvec 0.7.4", + "arrayvec 0.7.6", "cfg_aliases 0.1.1", "document-features", "js-sys", @@ -9109,13 +9142,13 @@ version = "22.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0348c840d1051b8e86c3bcd31206080c5e71e5933dabd79be1ce732b0b2f089a" dependencies = [ - "arrayvec 0.7.4", + "arrayvec 0.7.6", "bit-vec 0.7.0", "bitflags 2.6.0", "bytemuck", "cfg_aliases 0.1.1", "document-features", - "indexmap 2.2.6", + "indexmap 2.5.0", "log", "naga 22.1.0", "once_cell", @@ -9137,7 +9170,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f6bbf4b4de8b2a83c0401d9e5ae0080a2792055f25859a02bf9be97952bbed4f" dependencies = [ "android_system_properties", - "arrayvec 0.7.4", + "arrayvec 0.7.6", "ash", "bit-set 0.6.0", "bitflags 2.6.0", @@ -9247,11 +9280,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -9292,6 +9325,16 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6" +dependencies = [ + "windows-core 0.58.0", + "windows-targets 0.52.6", +] + [[package]] name = "windows-core" version = "0.52.0" @@ -9307,7 +9350,7 @@ version = "0.54.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "12661b9c89351d684a50a8a643ce5f608e20243b9fb84687800163429f161d65" dependencies = [ - "windows-result", + "windows-result 0.1.2", "windows-targets 0.52.6", ] @@ -9319,7 +9362,20 @@ checksum = "d2ed2439a290666cd67ecce2b0ffaad89c2a56b976b736e6ece670297897832d" dependencies = [ "windows-implement 0.57.0", "windows-interface 0.57.0", - "windows-result", + "windows-result 0.1.2", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-core" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99" +dependencies = [ + "windows-implement 0.58.0", + "windows-interface 0.58.0", + "windows-result 0.2.0", + "windows-strings", "windows-targets 0.52.6", ] @@ -9330,8 +9386,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "942ac266be9249c84ca862f0a164a39533dc2f6f33dc98ec89c8da99b82ea0bd" dependencies = [ "proc-macro2 1.0.86", - "quote 1.0.36", - "syn 2.0.69", + "quote 1.0.37", + "syn 2.0.77", ] [[package]] @@ -9341,8 +9397,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9107ddc059d5b6fbfbffdfa7a7fe3e22a226def0b2608f72e9d552763d3e1ad7" dependencies = [ "proc-macro2 1.0.86", - "quote 1.0.36", - "syn 2.0.69", + "quote 1.0.37", + "syn 2.0.77", +] + +[[package]] +name = "windows-implement" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" +dependencies = [ + "proc-macro2 1.0.86", + "quote 1.0.37", + "syn 2.0.77", ] [[package]] @@ -9352,8 +9419,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "da33557140a288fae4e1d5f8873aaf9eb6613a9cf82c3e070223ff177f598b60" dependencies = [ "proc-macro2 1.0.86", - "quote 1.0.36", - "syn 2.0.69", + "quote 1.0.37", + "syn 2.0.77", ] [[package]] @@ -9363,8 +9430,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "29bee4b38ea3cde66011baa44dba677c432a78593e202392d1e9070cf2a7fca7" dependencies = [ "proc-macro2 1.0.86", - "quote 1.0.36", - "syn 2.0.69", + "quote 1.0.37", + "syn 2.0.77", +] + +[[package]] +name = "windows-interface" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" +dependencies = [ + "proc-macro2 1.0.86", + "quote 1.0.37", + "syn 2.0.77", ] [[package]] @@ -9376,6 +9454,25 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-result" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-strings" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" +dependencies = [ + "windows-result 0.2.0", + "windows-targets 0.52.6", +] + [[package]] name = "windows-sys" version = "0.45.0" @@ -9592,9 +9689,9 @@ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winit" -version = "0.30.3" +version = "0.30.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f45a7b7e2de6af35448d7718dab6d95acec466eb3bb7a56f4d31d1af754004" +checksum = "0be9e76a1f1077e04a411f0b989cbd3c93339e1771cb41e71ac4aee95bfd2c67" dependencies = [ "ahash", "android-activity", @@ -9653,9 +9750,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.6.13" +version = "0.6.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59b5e5f6c299a3c7890b876a2a587f3115162487e704907d9b6cd29473052ba1" +checksum = "68a9bda4691f099d435ad181000724da8e5899daa10713c2d432552b9ccd3a6f" dependencies = [ "memchr", ] @@ -9713,9 +9810,9 @@ checksum = "ec107c4503ea0b4a98ef47356329af139c0a4f7750e621cf2973cd3385ebcb3d" [[package]] name = "xcursor" -version = "0.3.5" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a0ccd7b4a5345edfcd0c3535718a4e9ff7798ffc536bb5b5a0e26ff84732911" +checksum = "0ef33da6b1660b4ddbfb3aef0ade110c8b8a781a3b6382fa5f2b5b040fd55f61" [[package]] name = "xkbcommon-dl" @@ -9738,9 +9835,9 @@ checksum = "b9cc00251562a284751c9973bace760d86c0276c471b4be569fe6b068ee97a56" [[package]] name = "xml-rs" -version = "0.8.20" +version = "0.8.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "791978798f0597cfc70478424c2b4fdc2b7a8024aaff78497ef00f24ef674193" +checksum = "af4e2e2f7cba5a093896c1e150fbfe177d1883e7448200efb81d40b9d339ef26" [[package]] name = "xmlparser" @@ -9776,6 +9873,7 @@ version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" dependencies = [ + "byteorder", "zerocopy-derive 0.7.35", ] @@ -9797,8 +9895,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2 1.0.86", - "quote 1.0.36", - "syn 2.0.69", + "quote 1.0.37", + "syn 2.0.77", ] [[package]] @@ -9831,9 +9929,9 @@ dependencies = [ [[package]] name = "zune-jpeg" -version = "0.4.11" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec866b44a2a1fd6133d363f073ca1b179f438f99e7e5bfb1e33f7181facfe448" +checksum = "16099418600b4d8f028622f73ff6e3deaabdff330fb9a2a131dea781ee8b0768" dependencies = [ "zune-core", ] diff --git a/flake.lock b/flake.lock index 32979ead0..d43855e48 100644 --- a/flake.lock +++ b/flake.lock @@ -2,11 +2,11 @@ "nodes": { "nixpkgs": { "locked": { - "lastModified": 1725432240, - "narHash": "sha256-+yj+xgsfZaErbfYM3T+QvEE2hU7UuE+Jf0fJCJ8uPS0=", + "lastModified": 1725634671, + "narHash": "sha256-v3rIhsJBOMLR8e/RNWxr828tB+WywYIoajrZKFM+0Gg=", "owner": "nixos", "repo": "nixpkgs", - "rev": "ad416d066ca1222956472ab7d0555a6946746a80", + "rev": "574d1eac1c200690e27b8eb4e24887f8df7ac27c", "type": "github" }, "original": { From b40c8c4f6f129e0b9c82b46395f22eb94c86b041 Mon Sep 17 00:00:00 2001 From: Charlotte McElwain Date: Mon, 9 Sep 2024 13:09:29 -0700 Subject: [PATCH 3/7] Fmt. --- bevy_nannou_draw/src/render.rs | 1 - nannou/src/prelude.rs | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/bevy_nannou_draw/src/render.rs b/bevy_nannou_draw/src/render.rs index 5c43f26c7..2cda6ba93 100644 --- a/bevy_nannou_draw/src/render.rs +++ b/bevy_nannou_draw/src/render.rs @@ -23,7 +23,6 @@ use bevy::render::view::{NoFrustumCulling, RenderLayers}; use bevy::window::WindowRef; use lyon::lyon_tessellation::{FillTessellator, StrokeTessellator}; - use crate::draw::instanced::InstancingPlugin; use crate::draw::mesh::MeshExt; use crate::draw::render::{RenderContext, RenderPrimitive}; diff --git a/nannou/src/prelude.rs b/nannou/src/prelude.rs index 1ee22d708..314ba936d 100644 --- a/nannou/src/prelude.rs +++ b/nannou/src/prelude.rs @@ -13,8 +13,8 @@ pub use crate::render::*; pub use crate::wgpu; pub use crate::wgpu::util::{BufferInitDescriptor, DeviceExt}; pub use bevy_nannou::prelude::*; -pub use nannou_core::prelude::*; pub use bevy_nannou_derive::shader_model; +pub use nannou_core::prelude::*; pub use crate::app::{self, App, RunMode, UpdateModeExt}; pub use crate::camera::SetCamera; From d8eb4005a1a95d50a0f885f21f218e0625ffab2d Mon Sep 17 00:00:00 2001 From: Charlotte McElwain Date: Mon, 9 Sep 2024 13:48:58 -0700 Subject: [PATCH 4/7] Cleanup. --- bevy_nannou_derive/src/lib.rs | 4 +- bevy_nannou_draw/src/draw/drawing.rs | 13 +++---- bevy_nannou_draw/src/draw/instanced.rs | 2 +- bevy_nannou_draw/src/draw/mesh/mod.rs | 2 - bevy_nannou_draw/src/draw/mod.rs | 11 ++---- bevy_nannou_draw/src/draw/primitive/mesh.rs | 34 +---------------- bevy_nannou_draw/src/draw/primitive/path.rs | 1 + bevy_nannou_draw/src/draw/render/mod.rs | 2 - bevy_nannou_draw/src/render.rs | 3 +- default.nix | 2 +- nannou/src/app.rs | 24 ++++++------ nannou/src/camera.rs | 42 ++++++++++----------- nannou/src/light.rs | 20 +++++----- nannou/src/prelude.rs | 2 +- nannou/src/render.rs | 4 +- nannou/src/window.rs | 8 ++-- nannou_core/src/math.rs | 2 +- nannou_wgpu/src/texture/image.rs | 2 +- nannou_wgpu/src/texture/mod.rs | 2 +- 19 files changed, 69 insertions(+), 111 deletions(-) diff --git a/bevy_nannou_derive/src/lib.rs b/bevy_nannou_derive/src/lib.rs index c45305c95..93b8a8546 100644 --- a/bevy_nannou_derive/src/lib.rs +++ b/bevy_nannou_derive/src/lib.rs @@ -1,6 +1,6 @@ use proc_macro::TokenStream; -use quote::{quote, ToTokens}; -use syn::{parse_macro_input, parse_quote, Attribute, ItemStruct, Lit, Meta, NestedMeta}; +use quote::quote; +use syn::{parse_macro_input, parse_quote, ItemStruct, Lit, Meta, NestedMeta}; #[proc_macro_attribute] pub fn shader_model(attr: TokenStream, item: TokenStream) -> TokenStream { diff --git a/bevy_nannou_draw/src/draw/drawing.rs b/bevy_nannou_draw/src/draw/drawing.rs index 8f781d8e0..9e349583d 100644 --- a/bevy_nannou_draw/src/draw/drawing.rs +++ b/bevy_nannou_draw/src/draw/drawing.rs @@ -1,7 +1,7 @@ use std::any::TypeId; use std::marker::PhantomData; -use bevy::asset::{AsyncWriteExt, UntypedAssetId}; +use bevy::asset::UntypedAssetId; use bevy::pbr::{ExtendedMaterial, MaterialExtension}; use bevy::prelude::*; use lyon::path::PathEvent; @@ -13,7 +13,6 @@ use crate::draw::properties::{ SetColor, SetDimensions, SetFill, SetOrientation, SetPosition, SetStroke, }; use crate::draw::{Draw, DrawCommand, DrawRef}; -use crate::render::{ExtendedNannouMaterial, NannouMaterial}; /// A **Drawing** in progress. /// @@ -876,35 +875,35 @@ where T: Into, M: MaterialExtension + Default, { - pub fn roughness(mut self, roughness: f32) -> Self { + pub fn roughness(self, roughness: f32) -> Self { self.map_material(|mut material| { material.base.perceptual_roughness = roughness; material }) } - pub fn metallic(mut self, metallic: f32) -> Self { + pub fn metallic(self, metallic: f32) -> Self { self.map_material(|mut material| { material.base.metallic = metallic; material }) } - pub fn base_color>(mut self, color: C) -> Self { + pub fn base_color>(self, color: C) -> Self { self.map_material(|mut material| { material.base.base_color = color.into(); material }) } - pub fn emissive>(mut self, color: C) -> Self { + pub fn emissive>(self, color: C) -> Self { self.map_material(|mut material| { material.base.emissive = color.into().to_linear(); material }) } - pub fn texture(mut self, texture: &Handle) -> Self { + pub fn texture(self, texture: &Handle) -> Self { self.map_material(|mut material| { material.base.base_color_texture = Some(texture.clone()); material diff --git a/bevy_nannou_draw/src/draw/instanced.rs b/bevy_nannou_draw/src/draw/instanced.rs index 9e47434a9..ee1897d55 100644 --- a/bevy_nannou_draw/src/draw/instanced.rs +++ b/bevy_nannou_draw/src/draw/instanced.rs @@ -19,7 +19,7 @@ use bevy::{ render_asset::RenderAssets, render_phase::{ AddRenderCommand, DrawFunctions, PhaseItem, PhaseItemExtraIndex, RenderCommand, - RenderCommandResult, SetItemPipeline, SortedRenderPhase, TrackedRenderPass, + RenderCommandResult, SetItemPipeline, TrackedRenderPass, }, render_resource::*, renderer::RenderDevice, diff --git a/bevy_nannou_draw/src/draw/mesh/mod.rs b/bevy_nannou_draw/src/draw/mesh/mod.rs index 825bf1ddb..2d9b5e768 100644 --- a/bevy_nannou_draw/src/draw/mesh/mod.rs +++ b/bevy_nannou_draw/src/draw/mesh/mod.rs @@ -1,7 +1,5 @@ //! Items related to the custom mesh type used by the `Draw` API. -use std::ops::{Deref, DerefMut}; - use bevy::prelude::*; use bevy::render::mesh::{Indices, PrimitiveTopology, VertexAttributeValues}; use bevy::render::render_asset::RenderAssetUsages; diff --git a/bevy_nannou_draw/src/draw/mod.rs b/bevy_nannou_draw/src/draw/mod.rs index 97a2a1a10..9c2155150 100644 --- a/bevy_nannou_draw/src/draw/mod.rs +++ b/bevy_nannou_draw/src/draw/mod.rs @@ -4,11 +4,10 @@ use std::any::{Any, TypeId}; use std::marker::PhantomData; -use std::ops::{Deref, DerefMut}; +use std::ops::Deref; use std::sync::{Arc, RwLock}; use bevy::asset::UntypedAssetId; -use bevy::ecs::world::Command; use bevy::prelude::*; use bevy::render::render_resource as wgpu; use bevy::render::render_resource::{BlendComponent, BlendState}; @@ -16,15 +15,13 @@ use bevy::utils::{HashMap, HashSet}; use lyon::path::PathEvent; use uuid::Uuid; -use crate::draw::instanced::{InstanceMaterialData, Instanced}; -use crate::draw::mesh::MeshExt; -use crate::draw::render::RenderPrimitive; -use crate::render::DefaultNannouMaterial; - pub use self::background::Background; pub use self::drawing::{Drawing, DrawingContext}; use self::primitive::Primitive; pub use self::theme::Theme; +use crate::draw::instanced::{InstanceMaterialData, Instanced}; +use crate::draw::mesh::MeshExt; +use crate::render::DefaultNannouMaterial; pub mod background; mod drawing; diff --git a/bevy_nannou_draw/src/draw/primitive/mesh.rs b/bevy_nannou_draw/src/draw/primitive/mesh.rs index 1b96c25d1..f86096a63 100644 --- a/bevy_nannou_draw/src/draw/primitive/mesh.rs +++ b/bevy_nannou_draw/src/draw/primitive/mesh.rs @@ -27,14 +27,6 @@ pub struct PrimitiveMesh { #[derive(Clone, Debug, Default)] struct FillColor(Option); -// A simple iterator for flattening a fixed-size array of indices. -struct FlattenIndices { - iter: I, - index: usize, - vertex_start_index: usize, - current: [usize; 3], -} - pub type DrawingMesh<'a, M> = Drawing<'a, PrimitiveMesh, M>; impl Vertexless { @@ -311,7 +303,8 @@ impl PrimitiveMesh { fn new( vertex_range: ops::Range, index_range: ops::Range, - texture_handle: Option>, + // TODO: remove this? + _texture_handle: Option>, ) -> Self { let orientation = Default::default(); let position = Default::default(); @@ -553,29 +546,6 @@ impl draw::render::RenderPrimitive for PrimitiveMesh { } } -impl Iterator for FlattenIndices -where - I: Iterator, -{ - type Item = usize; - fn next(&mut self) -> Option { - loop { - if self.index < self.current.len() { - let ix = self.current[self.index]; - self.index += 1; - return Some(self.vertex_start_index + ix); - } - match self.iter.next() { - None => return None, - Some(trio) => { - self.current = trio; - self.index = 0; - } - } - } - } -} - impl SetOrientation for PrimitiveMesh { fn properties(&mut self) -> &mut orientation::Properties { SetOrientation::properties(&mut self.orientation) diff --git a/bevy_nannou_draw/src/draw/primitive/path.rs b/bevy_nannou_draw/src/draw/primitive/path.rs index 8a4d4467c..cb4e07285 100644 --- a/bevy_nannou_draw/src/draw/primitive/path.rs +++ b/bevy_nannou_draw/src/draw/primitive/path.rs @@ -68,6 +68,7 @@ pub struct Path { orientation: orientation::Properties, path_event_src: PathEventSource, options: Options, + // TODO: remove this? texture_handle: Option>, } diff --git a/bevy_nannou_draw/src/draw/render/mod.rs b/bevy_nannou_draw/src/draw/render/mod.rs index c51abf8ed..5219f8e85 100644 --- a/bevy_nannou_draw/src/draw/render/mod.rs +++ b/bevy_nannou_draw/src/draw/render/mod.rs @@ -1,5 +1,3 @@ -use std::hash::Hash; - use bevy::prelude::*; use lyon::path::PathEvent; use lyon::tessellation::{FillTessellator, StrokeTessellator}; diff --git a/bevy_nannou_draw/src/render.rs b/bevy_nannou_draw/src/render.rs index 2cda6ba93..abc475516 100644 --- a/bevy_nannou_draw/src/render.rs +++ b/bevy_nannou_draw/src/render.rs @@ -1,6 +1,5 @@ use std::any::TypeId; use std::hash::Hash; -use std::ops::{Deref, DerefMut}; use bevy::asset::Asset; use bevy::asset::UntypedAssetId; @@ -225,7 +224,7 @@ fn update_draw_mesh( let mut curr_ctx: DrawContext = Default::default(); let draw_cmds = draw.drain_commands(); - let mut draw_state = draw.state.read().unwrap(); + let draw_state = draw.state.read().unwrap(); let intermediary_state = draw_state.intermediary_state.read().unwrap(); for cmd in draw_cmds { diff --git a/default.nix b/default.nix index b47d9025e..8c43d66c3 100644 --- a/default.nix +++ b/default.nix @@ -25,7 +25,7 @@ rustPlatform.buildRustPackage rec { lockFile = ./Cargo.lock; outputHashes = { "skeptic-0.13.8" = "sha256-LLVrpuyQsMdbp8OYcHN0nq+uKC8xgJzpNy+gyXxTYbo="; - "bevy-0.15.0-dev" = "sha256-hVXJdAZLxsmLGt7ZDPg7vmsimz5j8GZhW5lKR93+Kzs="; + "bevy-0.15.0-dev" = "sha256-68Jwn6QEt3F24j6WmPAZz6D5gN8BYE706TRx3FE/6qs="; "bevy-inspector-egui-0.25.2" = "sha256-yjzmnHAxkejNtW8+cOV85IiGRM0614D7WtiauE6KWMA="; "bevy_egui-0.29.0" = "sha256-3UiUBpDhpud42ZcDwPHhSzmnlXkd9rH14lqXeRHdLlU="; }; diff --git a/nannou/src/app.rs b/nannou/src/app.rs index b2a11cdba..cf9f22c4c 100644 --- a/nannou/src/app.rs +++ b/nannou/src/app.rs @@ -23,7 +23,7 @@ use bevy::core::FrameCount; use bevy::diagnostic::{DiagnosticsStore, FrameTimeDiagnosticsPlugin}; use bevy::ecs::system::SystemParam; use bevy::ecs::world::unsafe_world_cell::UnsafeWorldCell; -use bevy::input::keyboard::KeyboardInput; +use bevy::input::keyboard::{Key, KeyboardInput}; use bevy::input::mouse::{MouseButtonInput, MouseWheel}; use bevy::input::ButtonState; use bevy::prelude::*; @@ -32,7 +32,6 @@ use bevy::reflect::{ TypeInfo, }; use bevy::render::extract_resource::ExtractResource; -use bevy::render::render_graph::ViewNodeRunner; use bevy::window::{ ExitCondition, Monitor, PrimaryMonitor, PrimaryWindow, WindowClosed, WindowEvent, WindowFocused, WindowResized, @@ -48,7 +47,6 @@ use bevy_inspector_egui::quick::WorldInspectorPlugin; use bevy_inspector_egui::DefaultInspectorConfigPlugin; use find_folder; -use bevy_nannou::prelude::render::ExtendedNannouMaterial; use bevy_nannou::prelude::{draw, DrawHolder}; use bevy_nannou::NannouPlugin; @@ -56,7 +54,7 @@ use crate::frame::{Frame, FramePlugin}; use crate::prelude::bevy_ecs::system::SystemState; use crate::prelude::render::{NannouMesh, ShaderModel}; use crate::prelude::NannouMaterialPlugin; -use crate::render::{NannouRenderNode, RenderApp, RenderPlugin}; +use crate::render::{RenderApp, RenderPlugin}; use crate::window::WindowUserFunctions; use crate::{camera, geom, light, window}; @@ -297,7 +295,6 @@ where pub fn render(mut self, render: RenderFn) -> Self where M: Send + Sync + Clone + 'static, - ViewNodeRunner>: FromWorld, { self.render = Some(render); self.app @@ -727,7 +724,7 @@ impl<'w> App<'w> { } pub(crate) fn resource_world_mut(&self) -> RefMut<'_, World> { - let world = unsafe { self.resource_world.borrow_mut() }; + let world = self.resource_world.borrow_mut(); RefMut::map(world, |world| unsafe { world.world_mut() }) } @@ -737,7 +734,7 @@ impl<'w> App<'w> { } pub(crate) fn component_world_mut(&self) -> RefMut<'_, World> { - let world = unsafe { self.component_world.borrow_mut() }; + let world = self.component_world.borrow_mut(); RefMut::map(world, |world| unsafe { world.world_mut() }) } @@ -1126,14 +1123,13 @@ fn events( state: &mut SystemState<( EventReader, Res>, - Query<&WindowUserFunctions>, ResMut>, )>, ) where M: Send + Sync + 'static, E: Event, { - let (app, (mut events, event_fn, user_fns, mut model)) = get_app_and_state(world, state); + let (app, (mut events, event_fn, mut model)) = get_app_and_state(world, state); for evt in events.read() { if let Some(f) = event_fn.0.as_ref() { f(&app, &mut model, evt); @@ -1178,7 +1174,7 @@ fn key_events( fn received_char_events( world: &mut World, state: &mut SystemState<( - EventReader, + EventReader, Query<&WindowUserFunctions>, ResMut>, )>, @@ -1192,8 +1188,12 @@ fn received_char_events( if let Ok(user_fns) = user_fns.get(evt.window) { if let Some(f) = user_fns.received_character { app.current_view = Some(evt.window); - let char = evt.char.chars().next().unwrap(); - f(&app, &mut model, char); + let key = &evt.logical_key; + if let Key::Character(char) = key { + for char in char.chars() { + f(&app, &mut model, char); + } + } } } } diff --git a/nannou/src/camera.rs b/nannou/src/camera.rs index ccf0d09ae..1aabc924c 100644 --- a/nannou/src/camera.rs +++ b/nannou/src/camera.rs @@ -23,18 +23,18 @@ pub struct Builder<'a, 'w> { } pub trait SetCamera: Sized { - fn layer(mut self, layer: RenderLayers) -> Self { + fn layer(self, layer: RenderLayers) -> Self { self.map_layer(|_| layer) } - fn order(mut self, order: isize) -> Self { + fn order(self, order: isize) -> Self { self.map_camera(|mut camera| { camera.camera.order = order; camera }) } - fn x_y(mut self, x: f32, y: f32) -> Self { + fn x_y(self, x: f32, y: f32) -> Self { self.map_camera(|mut camera| { camera.transform.translation = bevy::math::Vec3::new(x, y, camera.transform.translation.z); @@ -42,35 +42,35 @@ pub trait SetCamera: Sized { }) } - fn xy(mut self, p: Vec2) -> Self { + fn xy(self, p: Vec2) -> Self { self.map_camera(|mut camera| { camera.transform.translation = p.extend(camera.transform.translation.z); camera }) } - fn x_y_z(mut self, x: f32, y: f32, z: f32) -> Self { + fn x_y_z(self, x: f32, y: f32, z: f32) -> Self { self.map_camera(|mut camera| { camera.transform.translation = bevy::math::Vec3::new(x, y, z); camera }) } - fn xyz(mut self, p: Vec3) -> Self { + fn xyz(self, p: Vec3) -> Self { self.map_camera(|mut camera| { camera.transform.translation = p; camera }) } - fn hdr(mut self, hdr: bool) -> Self { + fn hdr(self, hdr: bool) -> Self { self.map_camera(|mut camera| { camera.camera.hdr = hdr; camera }) } - fn viewport(mut self, position: UVec2, size: UVec2) -> Self { + fn viewport(self, position: UVec2, size: UVec2) -> Self { self.map_camera(|mut camera| { camera.camera.viewport = Some(camera::Viewport { physical_position: position, @@ -81,60 +81,60 @@ pub trait SetCamera: Sized { }) } - fn window(mut self, window: Entity) -> Self { + fn window(self, window: Entity) -> Self { self.map_camera(|mut camera| { camera.camera.target = RenderTarget::Window(WindowRef::Entity(window)); camera }) } - fn tonemapping(mut self, tonemapping: Tonemapping) -> Self { + fn tonemapping(self, tonemapping: Tonemapping) -> Self { self.map_camera(|mut camera| { camera.tonemapping = tonemapping; camera }) } - fn clear_color(mut self, color: ClearColorConfig) -> Self { + fn clear_color(self, color: ClearColorConfig) -> Self { self.map_camera(|mut camera| { camera.camera.clear_color = color; camera }) } - fn bloom_settings(mut self, settings: BloomSettings) -> Self { + fn bloom_settings(self, settings: BloomSettings) -> Self { self.map_bloom_settings(|_| settings) } - fn bloom_intensity(mut self, intensity: f32) -> Self { + fn bloom_intensity(self, intensity: f32) -> Self { self.map_bloom_settings(|mut settings| { settings.intensity = intensity; settings }) } - fn bloom_low_frequency_boost(mut self, low_frequency_boost: f32) -> Self { + fn bloom_low_frequency_boost(self, low_frequency_boost: f32) -> Self { self.map_bloom_settings(|mut settings| { settings.low_frequency_boost = low_frequency_boost; settings }) } - fn bloom_low_frequency_boost_curvature(mut self, low_frequency_boost_curvature: f32) -> Self { + fn bloom_low_frequency_boost_curvature(self, low_frequency_boost_curvature: f32) -> Self { self.map_bloom_settings(|mut settings| { settings.low_frequency_boost_curvature = low_frequency_boost_curvature; settings }) } - fn bloom_high_pass_frequency(mut self, high_pass_frequency: f32) -> Self { + fn bloom_high_pass_frequency(self, high_pass_frequency: f32) -> Self { self.map_bloom_settings(|mut settings| { settings.high_pass_frequency = high_pass_frequency; settings }) } - fn bloom_prefilter_settings(mut self, threshold: f32, threshold_softness: f32) -> Self { + fn bloom_prefilter_settings(self, threshold: f32, threshold_softness: f32) -> Self { self.map_bloom_settings(|mut settings| { settings.prefilter_settings = bevy::core_pipeline::bloom::BloomPrefilterSettings { threshold, @@ -145,7 +145,7 @@ pub trait SetCamera: Sized { } fn bloom_composite_mode( - mut self, + self, composite_mode: bevy::core_pipeline::bloom::BloomCompositeMode, ) -> Self { self.map_bloom_settings(|mut settings| { @@ -180,7 +180,7 @@ impl<'a, 'w> Builder<'a, 'w> { app, camera: Camera3dBundle { transform: Transform::from_xyz(0.0, 0.0, 10.0).looking_at(Vec3::ZERO, Vec3::Y), - projection: OrthographicProjection::default().into(), + projection: OrthographicProjection::default_3d().into(), ..default() }, bloom_settings: None, @@ -260,7 +260,7 @@ impl<'a, 'w> SetCamera for Camera<'a, 'w> { { let mut world = self.app.component_world_mut(); let mut layer_q = world.query::>(); - if let Ok(mut layer) = layer_q.get_mut(&mut world, self.entity) { + if let Ok(layer) = layer_q.get_mut(&mut world, self.entity) { if let Some(mut layer) = layer { *layer = f(layer.clone()); } else { @@ -278,7 +278,7 @@ impl<'a, 'w> SetCamera for Camera<'a, 'w> { { let mut world = self.app.component_world_mut(); let mut bloom_q = world.query::>(); - if let Ok(mut bloom) = bloom_q.get_mut(&mut world, self.entity) { + if let Ok(bloom) = bloom_q.get_mut(&mut world, self.entity) { if let Some(mut bloom) = bloom { *bloom = f(bloom.clone()); } else { diff --git a/nannou/src/light.rs b/nannou/src/light.rs index aa1ec8d12..f653aa7a8 100644 --- a/nannou/src/light.rs +++ b/nannou/src/light.rs @@ -1,7 +1,5 @@ -use bevy::core_pipeline::bloom::BloomSettings; use bevy::pbr::{DirectionalLight, DirectionalLightBundle}; use bevy::prelude::{Color, Transform, Vec2}; -use bevy::render::camera; use bevy::render::view::RenderLayers; use bevy_nannou::prelude::{default, Entity, Vec3}; @@ -20,35 +18,35 @@ pub struct Builder<'a, 'w> { } pub trait SetLight: Sized { - fn x_y(mut self, x: f32, y: f32) -> Self { + fn x_y(self, x: f32, y: f32) -> Self { self.map_light(|mut light| { light.transform.translation = Vec3::new(x, y, light.transform.translation.z); light }) } - fn xy(mut self, p: Vec2) -> Self { + fn xy(self, p: Vec2) -> Self { self.map_light(|mut light| { light.transform.translation = p.extend(light.transform.translation.z); light }) } - fn x_y_z(mut self, x: f32, y: f32, z: f32) -> Self { + fn x_y_z(self, x: f32, y: f32, z: f32) -> Self { self.map_light(|mut light| { light.transform.translation = Vec3::new(x, y, z); light }) } - fn xyz(mut self, p: Vec3) -> Self { + fn xyz(self, p: Vec3) -> Self { self.map_light(|mut light| { light.transform.translation = p; light }) } - fn look_at(mut self, target: Vec2) -> Self { + fn look_at(self, target: Vec2) -> Self { self.map_light(|mut light| { light.transform = Transform::from_translation(light.transform.translation) .looking_at(target.extend(0.0), Vec3::Y); @@ -56,21 +54,21 @@ pub trait SetLight: Sized { }) } - fn color>(mut self, color: C) -> Self { + fn color>(self, color: C) -> Self { self.map_light(|mut light| { light.directional_light.color = color.into(); light }) } - fn illuminance(mut self, illuminance: f32) -> Self { + fn illuminance(self, illuminance: f32) -> Self { self.map_light(|mut light| { light.directional_light.illuminance = illuminance; light }) } - fn layer(mut self, layer: RenderLayers) -> Self { + fn layer(self, layer: RenderLayers) -> Self { self.map_layer(|_| layer) } @@ -147,7 +145,7 @@ impl<'a, 'w> SetLight for Light<'a, 'w> { { let mut world = self.app.component_world_mut(); let mut layer_q = world.query::>(); - if let Ok(mut layer) = layer_q.get_mut(&mut world, self.entity) { + if let Ok(layer) = layer_q.get_mut(&mut world, self.entity) { if let Some(mut layer) = layer { *layer = f(layer.clone()); } else { diff --git a/nannou/src/prelude.rs b/nannou/src/prelude.rs index 314ba936d..eb1cbb465 100644 --- a/nannou/src/prelude.rs +++ b/nannou/src/prelude.rs @@ -4,7 +4,7 @@ pub use bevy::asset as bevy_asset; pub use bevy::ecs as bevy_ecs; pub use bevy::reflect as bevy_reflect; pub use bevy::render as bevy_render; -pub use bevy::tasks::*; +pub use bevy::tasks::prelude::*; #[cfg(feature = "egui")] pub use bevy_egui::egui; diff --git a/nannou/src/render.rs b/nannou/src/render.rs index a6e412d75..0bceb7de9 100644 --- a/nannou/src/render.rs +++ b/nannou/src/render.rs @@ -3,7 +3,7 @@ use crate::frame::Frame; use crate::prelude::bevy_render::extract_resource::extract_resource; use bevy::core_pipeline::core_3d::graph::{Core3d, Node3d}; use bevy::ecs::query::QueryItem; -pub use bevy::prelude::*; +use bevy::prelude::*; use bevy::render::render_graph::{ NodeRunError, RenderGraphApp, RenderGraphContext, RenderLabel, ViewNode, ViewNodeRunner, }; @@ -96,7 +96,7 @@ impl FromWorld for NannouRenderNode where M: Send + Sync + Clone + 'static, { - fn from_world(world: &mut World) -> Self { + fn from_world(_world: &mut World) -> Self { Self(std::marker::PhantomData) } } diff --git a/nannou/src/window.rs b/nannou/src/window.rs index a20d2d9e5..1759a54ff 100644 --- a/nannou/src/window.rs +++ b/nannou/src/window.rs @@ -18,12 +18,9 @@ use bevy::render::view::screenshot::{save_to_disk, Screenshot}; use bevy::render::view::RenderLayers; use bevy::window::{CursorGrabMode, PrimaryWindow, WindowLevel, WindowMode, WindowRef}; -use crate::app::RenderFnRes; -use crate::frame::{Frame, FramePlugin}; use crate::geom::Point2; use crate::glam::Vec2; use crate::prelude::WindowResizeConstraints; -use crate::render::{RenderApp, RenderPlugin}; use crate::App; use bevy_nannou::prelude::render::NannouCamera; use bevy_nannou::prelude::MonitorSelection; @@ -82,6 +79,7 @@ impl<'a, 'w> Window<'a, 'w> { Window { app, entity } } + #[allow(dead_code)] fn window(&self) -> bevy_nannou::prelude::Window { let world = self.app.component_world(); world @@ -466,7 +464,7 @@ where ..default() }, transform: Transform::from_xyz(0.0, 0.0, 10.0).looking_at(Vec3::ZERO, Vec3::Y), - projection: OrthographicProjection::default().into(), + projection: OrthographicProjection::default_3d().into(), ..default() }, layer.clone(), @@ -587,7 +585,7 @@ where } /// Move the window to the center of the given monitor. - pub fn monitor(mut self, monitor: MonitorSelection) -> Self { + pub fn monitor(self, monitor: MonitorSelection) -> Self { self.map_window(|mut w| { w.position = WindowPosition::Centered(monitor); w diff --git a/nannou_core/src/math.rs b/nannou_core/src/math.rs index ddf5788e9..c695da75d 100644 --- a/nannou_core/src/math.rs +++ b/nannou_core/src/math.rs @@ -85,7 +85,7 @@ impl ConvertAngle for f64 { impl Vec2Angle for glam::Vec2 { fn angle(self) -> f32 { - glam::Vec2::X.angle_between(self) + glam::Vec2::X.angle_to(self) } } diff --git a/nannou_wgpu/src/texture/image.rs b/nannou_wgpu/src/texture/image.rs index 95a4a3971..af9dceee7 100644 --- a/nannou_wgpu/src/texture/image.rs +++ b/nannou_wgpu/src/texture/image.rs @@ -4,7 +4,7 @@ //! This module can be enabled via the `image` feature. use crate as wgpu; -use image::{DynamicImage, PixelWithColorType}; +use image::PixelWithColorType; use std::ops::Deref; use std::path::Path; diff --git a/nannou_wgpu/src/texture/mod.rs b/nannou_wgpu/src/texture/mod.rs index 1bb29e148..72981b6ae 100644 --- a/nannou_wgpu/src/texture/mod.rs +++ b/nannou_wgpu/src/texture/mod.rs @@ -760,7 +760,7 @@ pub fn data_size_bytes(desc: &wgpu::TextureDescriptor) -> usize { /// Return the size of the given texture format in bytes. pub fn format_size_bytes(format: wgpu::TextureFormat) -> u32 { format - .block_size(None) + .block_copy_size(None) .expect("Expected the format to have a block size") as u32 } From 7ed39c5bdce921f84c743ce2d350f56b35ee38c4 Mon Sep 17 00:00:00 2001 From: Charlotte McElwain Date: Mon, 9 Sep 2024 14:07:44 -0700 Subject: [PATCH 5/7] Fix prelude. --- examples/wgpu/wgpu_compute_shader/wgpu_compute_shader.rs | 1 - nannou/src/prelude.rs | 4 +++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/examples/wgpu/wgpu_compute_shader/wgpu_compute_shader.rs b/examples/wgpu/wgpu_compute_shader/wgpu_compute_shader.rs index 7b743f3ba..af26ced8f 100644 --- a/examples/wgpu/wgpu_compute_shader/wgpu_compute_shader.rs +++ b/examples/wgpu/wgpu_compute_shader/wgpu_compute_shader.rs @@ -5,7 +5,6 @@ //! with a gray value equal to the amplitude. Real-time interaction is demonstrated by providing //! access to time, frequency (mouse `x`) and the number of oscillators via uniform data. -use nannou::prelude::futures_lite::future; use nannou::prelude::*; use nannou::wgpu::BufferInitDescriptor; use std::sync::{Arc, Mutex}; diff --git a/nannou/src/prelude.rs b/nannou/src/prelude.rs index eb1cbb465..dde52ec0f 100644 --- a/nannou/src/prelude.rs +++ b/nannou/src/prelude.rs @@ -4,7 +4,9 @@ pub use bevy::asset as bevy_asset; pub use bevy::ecs as bevy_ecs; pub use bevy::reflect as bevy_reflect; pub use bevy::render as bevy_render; -pub use bevy::tasks::prelude::*; +pub use bevy::tasks::{Task, futures_lite::future}; +pub use bevy::tasks::prelude::{block_on, AsyncComputeTaskPool, IoTaskPool}; + #[cfg(feature = "egui")] pub use bevy_egui::egui; From 19e235a937ce11f19588ba1a1f68de92d0463be3 Mon Sep 17 00:00:00 2001 From: Charlotte McElwain Date: Mon, 9 Sep 2024 14:11:47 -0700 Subject: [PATCH 6/7] Fmt. --- nannou/src/prelude.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nannou/src/prelude.rs b/nannou/src/prelude.rs index dde52ec0f..25378492c 100644 --- a/nannou/src/prelude.rs +++ b/nannou/src/prelude.rs @@ -4,8 +4,8 @@ pub use bevy::asset as bevy_asset; pub use bevy::ecs as bevy_ecs; pub use bevy::reflect as bevy_reflect; pub use bevy::render as bevy_render; -pub use bevy::tasks::{Task, futures_lite::future}; pub use bevy::tasks::prelude::{block_on, AsyncComputeTaskPool, IoTaskPool}; +pub use bevy::tasks::{futures_lite::future, Task}; #[cfg(feature = "egui")] pub use bevy_egui::egui; From 4cd1ff067f3e4edd2abfb9e2b546c3a50c635331 Mon Sep 17 00:00:00 2001 From: Charlotte McElwain Date: Mon, 9 Sep 2024 16:25:02 -0700 Subject: [PATCH 7/7] Remove file. --- bevy_nannou_draw/src/draw/indirect.rs | 329 -------------------------- 1 file changed, 329 deletions(-) delete mode 100644 bevy_nannou_draw/src/draw/indirect.rs diff --git a/bevy_nannou_draw/src/draw/indirect.rs b/bevy_nannou_draw/src/draw/indirect.rs deleted file mode 100644 index 682eb9316..000000000 --- a/bevy_nannou_draw/src/draw/indirect.rs +++ /dev/null @@ -1,329 +0,0 @@ -//! A shader that renders a mesh multiple times in one draw call. - -use crate::draw::drawing::Drawing; -use crate::draw::primitive::Primitive; -use crate::draw::{Draw, DrawCommand}; -use bevy::core_pipeline::core_3d::Opaque3dBinKey; -use bevy::pbr::{MaterialPipeline, MaterialPipelineKey, PreparedMaterial, SetMaterialBindGroup}; -use bevy::render::mesh::allocator::MeshAllocator; -use bevy::render::mesh::RenderMeshBufferInfo; -use bevy::render::render_asset::prepare_assets; -use bevy::render::render_phase::{BinnedRenderPhaseType, ViewBinnedRenderPhases}; -use bevy::{ - core_pipeline::core_3d::Opaque3d, - ecs::system::{lifetimeless::*, SystemParamItem}, - pbr::{ - MeshPipeline, MeshPipelineKey, RenderMeshInstances, SetMeshBindGroup, SetMeshViewBindGroup, - }, - prelude::*, - render::{ - extract_component::ExtractComponent, - mesh::{MeshVertexBufferLayoutRef, RenderMesh}, - render_asset::RenderAssets, - render_phase::{ - AddRenderCommand, DrawFunctions, PhaseItem, PhaseItemExtraIndex, RenderCommand, - RenderCommandResult, SetItemPipeline, TrackedRenderPass, - }, - render_resource::*, - renderer::RenderDevice, - view::ExtractedView, - Render, RenderApp, RenderSet, - }, -}; -use rayon::prelude::*; -use std::hash::Hash; -use std::marker::PhantomData; -use std::ops::Range; -use bevy::render::storage::ShaderStorageBuffer; - -pub struct Indirect<'a, M> -where - M: Material + Default, -{ - draw: &'a Draw, - data: Option<(usize, Handle)>, -} - -impl<'a, M> Drop for Indirect<'a, M> -where - M: Material + Default, -{ - fn drop(&mut self) { - if let Some((index, data)) = self.data.take() { - self.insert_indirect_draw_command(index, data); - } - } -} - -pub fn new(draw: &Draw) -> Indirect -where - M: Material + Default, -{ - Indirect { draw, data: None } -} - -impl<'a, M> Indirect<'a, M> -where - M: Material + Default, -{ - pub fn with(mut self, drawing: Drawing, indirect_buffer: Handle) -> Indirect<'a, M> - where - T: Into, - { - self.draw - .state - .write() - .unwrap() - .ignored_drawings - .insert(drawing.index); - self.data = Some((drawing.index, indirect_buffer)); - self - } - - fn insert_indirect_draw_command(&self, index: usize, indirect_buffer: Handle) { - let mut state = self.draw.state.write().unwrap(); - let primitive = state.drawing.remove(&index).unwrap(); - state - .draw_commands - .push(Some(DrawCommand::Indirect(primitive, indirect_buffer))); - } -} - -#[derive(Component)] -pub struct IndirectEntity; - -pub struct IndirectMaterialPlugin(PhantomData); - -impl Default for IndirectMaterialPlugin -where - M: Default, -{ - fn default() -> Self { - IndirectMaterialPlugin(PhantomData) - } -} - -impl Plugin for IndirectMaterialPlugin -where - M: Material + Default, - M::Data: PartialEq + Eq + Hash + Clone, -{ - fn build(&self, app: &mut App) { - app.sub_app_mut(RenderApp) - .add_render_command::>() - .init_resource::>>() - .add_systems( - Render, - (queue_indirect:: - .after(prepare_assets::>) - .in_set(RenderSet::QueueMeshes)), - ); - } - - fn finish(&self, app: &mut App) { - app.sub_app_mut(RenderApp) - .init_resource::>(); - } -} - -#[allow(clippy::too_many_arguments)] -fn queue_indirect( - draw_functions: Res>, - custom_pipeline: Res>, - mut pipelines: ResMut>>, - pipeline_cache: Res, - meshes: Res>, - (render_mesh_instances, material_meshes, mut phases, mut views, materials): ( - Res, - Query<(Entity, &Handle), With>, - ResMut>, - Query<(Entity, &ExtractedView, &Msaa)>, - Res>>, - ), -) where - M: Material, - M::Data: PartialEq + Eq + Hash + Clone, -{ - let drawn_function = draw_functions.read().id::>(); - - for (view_entity, view, msaa) in &mut views { - let msaa_key = MeshPipelineKey::from_msaa_samples(msaa.samples()); - let Some(phase) = phases.get_mut(&view_entity) else { - continue; - }; - - let view_key = msaa_key | MeshPipelineKey::from_hdr(view.hdr); - for (entity, material) in &material_meshes { - let material = materials.get(material).unwrap(); - let Some(mesh_instance) = render_mesh_instances.render_mesh_queue_data(entity) else { - continue; - }; - let Some(mesh) = meshes.get(mesh_instance.mesh_asset_id) else { - continue; - }; - let mesh_key = - view_key | MeshPipelineKey::from_primitive_topology(mesh.primitive_topology()); - let key = MaterialPipelineKey { - mesh_key, - bind_group_data: material.key.clone(), - }; - let pipeline = pipelines - .specialize(&pipeline_cache, &custom_pipeline, key, &mesh.layout) - .unwrap(); - info!("Queueing indirect mesh {:?}", entity); - phase.add( - Opaque3dBinKey { - draw_function: drawn_function, - pipeline, - asset_id: AssetId::::invalid().untyped(), - material_bind_group_id: None, - lightmap_image: None, - }, - entity, - BinnedRenderPhaseType::NonMesh, - ); - } - } -} - -#[derive(Component)] -pub(crate) struct InstanceRange(pub Range); - -#[derive(Resource)] -struct IndirectDataPipeline { - mesh_pipeline: MeshPipeline, - material_layout: BindGroupLayout, - vertex_shader: Option>, - fragment_shader: Option>, - marker: PhantomData, -} - -impl FromWorld for IndirectDataPipeline { - fn from_world(world: &mut World) -> Self { - let asset_server = world.resource::(); - let render_device = world.resource::(); - - IndirectDataPipeline { - mesh_pipeline: world.resource::().clone(), - material_layout: M::bind_group_layout(render_device), - vertex_shader: match M::vertex_shader() { - ShaderRef::Default => None, - ShaderRef::Handle(handle) => Some(handle), - ShaderRef::Path(path) => Some(asset_server.load(path)), - }, - fragment_shader: match M::fragment_shader() { - ShaderRef::Default => None, - ShaderRef::Handle(handle) => Some(handle), - ShaderRef::Path(path) => Some(asset_server.load(path)), - }, - marker: PhantomData, - } - } -} - -impl SpecializedMeshPipeline for IndirectDataPipeline -where - M::Data: PartialEq + Eq + Hash + Clone, -{ - type Key = MaterialPipelineKey; - - fn specialize( - &self, - key: Self::Key, - layout: &MeshVertexBufferLayoutRef, - ) -> Result { - let mut descriptor = self.mesh_pipeline.specialize(key.mesh_key, layout)?; - if let Some(vertex_shader) = &self.vertex_shader { - descriptor.vertex.shader = vertex_shader.clone(); - } - - if let Some(fragment_shader) = &self.fragment_shader { - descriptor.fragment.as_mut().unwrap().shader = fragment_shader.clone(); - } - - descriptor.layout.insert(2, self.material_layout.clone()); - - let pipeline = MaterialPipeline { - mesh_pipeline: self.mesh_pipeline.clone(), - material_layout: self.material_layout.clone(), - vertex_shader: self.vertex_shader.clone(), - fragment_shader: self.fragment_shader.clone(), - marker: Default::default(), - }; - M::specialize(&pipeline, &mut descriptor, layout, key)?; - Ok(descriptor) - } -} - -type DrawIndirectMaterial = ( - SetItemPipeline, - SetMeshViewBindGroup<0>, - SetMeshBindGroup<1>, - SetMaterialBindGroup, - DrawMeshIndirect, -); - -struct DrawMeshIndirect; - -impl RenderCommand

for DrawMeshIndirect { - type Param = ( - SRes>, - SRes, - SRes, - ); - type ViewQuery = (); - type ItemQuery = Read; - - #[inline] - fn render<'w>( - item: &P, - _view: (), - instance_range: Option<&'w InstanceRange>, - (meshes, render_mesh_instances, mesh_allocator): SystemParamItem<'w, '_, Self::Param>, - pass: &mut TrackedRenderPass<'w>, - ) -> RenderCommandResult { - let mesh_allocator = mesh_allocator.into_inner(); - - let Some(mesh_instance) = render_mesh_instances.render_mesh_queue_data(item.entity()) - else { - return RenderCommandResult::Skip; - }; - let Some(gpu_mesh) = meshes.into_inner().get(mesh_instance.mesh_asset_id) else { - return RenderCommandResult::Skip; - }; - let Some(instance_range) = instance_range else { - return RenderCommandResult::Skip; - }; - let Some(vertex_buffer_slice) = - mesh_allocator.mesh_vertex_slice(&mesh_instance.mesh_asset_id) - else { - return RenderCommandResult::Skip; - }; - - pass.set_vertex_buffer(0, vertex_buffer_slice.buffer.slice(..)); - - match &gpu_mesh.buffer_info { - RenderMeshBufferInfo::Indexed { - index_format, - count, - } => { - let Some(index_buffer_slice) = - mesh_allocator.mesh_index_slice(&mesh_instance.mesh_asset_id) - else { - return RenderCommandResult::Skip; - }; - - pass.set_index_buffer(index_buffer_slice.buffer.slice(..), 0, *index_format); - pass.draw_indexed( - index_buffer_slice.range.start..(index_buffer_slice.range.start + count), - vertex_buffer_slice.range.start as i32, - instance_range.0.clone(), - ); - } - RenderMeshBufferInfo::NonIndexed => { - pass.draw(0..gpu_mesh.vertex_count, instance_range.0.clone()); - } - } - RenderCommandResult::Success - } -}