From 19ce07da024e19e1b28295a3db094d6741706540 Mon Sep 17 00:00:00 2001 From: Willow Black Date: Tue, 7 Oct 2025 13:41:15 -0700 Subject: [PATCH] Update to bevy 0.17 --- Cargo.toml | 9 +++++---- README.md | 1 + examples/minimal.rs | 8 +++----- examples/nbody.rs | 10 +++++----- examples/perspective.rs | 8 +++----- src/lib.rs | 4 ++-- src/material.rs | 18 +++++++++++------- src/polyline.rs | 29 ++++++++++++++++------------- 8 files changed, 46 insertions(+), 41 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index adf7386..0abe25c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,7 @@ [package] edition = "2021" name = "bevy_polyline" -version = "0.12.0" +version = "0.13.0" description = "Polyline Rendering for Bevy" license = "MIT OR Apache-2.0" repository = "https://github.com/ForesightMiningSoftwareCorporation/bevy_polyline" @@ -18,23 +18,24 @@ authors = [ [dependencies] bitflags = "2.3" -bevy = { version = "0.16", default-features = false, features = [ +bevy = { version = "0.17", default-features = false, features = [ "bevy_core_pipeline", "bevy_render", "bevy_asset", ] } +bevy_post_process = "0.17" bytemuck = "1.16.1" [dev-dependencies] lazy_static = "1.4.0" rand = "0.8.4" ringbuffer = "0.15" -bevy = { version = "0.16", default-features = false, features = [ +bevy = { version = "0.17", default-features = false, features = [ "bevy_window", "bevy_winit", "bevy_pbr", "x11", "tonemapping_luts", "ktx2", - "zstd", + "zstd_rust", ] } diff --git a/README.md b/README.md index 9143b74..0964f1c 100644 --- a/README.md +++ b/README.md @@ -47,6 +47,7 @@ We intend to track the `main` branch of Bevy. PRs supporting this are welcome! | bevy | bevy_polyline | | ---- | ------------- | +| 0.17 | 0.13 | | 0.16 | 0.12 | | 0.15 | 0.11 | | 0.14 | 0.10 | diff --git a/examples/minimal.rs b/examples/minimal.rs index 37a89a6..d7db7c1 100644 --- a/examples/minimal.rs +++ b/examples/minimal.rs @@ -1,4 +1,4 @@ -use bevy::{color::palettes::css::RED, prelude::*}; +use bevy::{color::palettes::css::RED, prelude::*, render::view::Hdr}; use bevy_polyline::prelude::*; fn main() { @@ -30,10 +30,8 @@ fn setup( // camera commands.spawn(( Camera3d::default(), - Camera { - hdr: true, - ..default() - }, + Camera::default(), + Hdr, Msaa::Sample4, Transform::from_xyz(0.0, 0.0, 5.0).looking_at(Vec3::ZERO, Vec3::Y), )); diff --git a/examples/nbody.rs b/examples/nbody.rs index c23fcb7..ea46005 100644 --- a/examples/nbody.rs +++ b/examples/nbody.rs @@ -1,12 +1,14 @@ use std::f32::consts::PI; use bevy::{ - core_pipeline::{bloom::Bloom, tonemapping::Tonemapping}, + core_pipeline::tonemapping::Tonemapping, diagnostic::{FrameTimeDiagnosticsPlugin, LogDiagnosticsPlugin}, math::Vec3A, prelude::*, + render::view::Hdr, }; use bevy_polyline::prelude::*; +use bevy_post_process::bloom::Bloom; use lazy_static::*; use rand::{prelude::*, Rng}; @@ -79,10 +81,8 @@ fn setup( // camera commands.spawn(( Camera3d::default(), - Camera { - hdr: true, - ..default() - }, + Camera::default(), + Hdr, Msaa::Sample4, Tonemapping::TonyMcMapface, Bloom::default(), diff --git a/examples/perspective.rs b/examples/perspective.rs index b8676c1..c4bd880 100644 --- a/examples/perspective.rs +++ b/examples/perspective.rs @@ -1,4 +1,4 @@ -use bevy::{color::palettes::css::RED, prelude::*}; +use bevy::{color::palettes::css::RED, prelude::*, render::view::Hdr}; use bevy_polyline::prelude::*; fn main() { @@ -33,10 +33,8 @@ fn setup( Camera3d::default(), Msaa::Sample4, Transform::from_xyz(0.0, 0.0, 2.0).looking_at(Vec3::ZERO, Vec3::Y), - Camera { - hdr: true, - ..default() - }, + Camera::default(), + Hdr, )); } diff --git a/src/lib.rs b/src/lib.rs index 18ddc11..c8fb605 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -2,7 +2,7 @@ #![allow(clippy::too_many_arguments)] use bevy::{ - asset::{load_internal_asset, weak_handle}, + asset::{load_internal_asset, uuid_handle}, prelude::*, }; use material::PolylineMaterialPlugin; @@ -18,7 +18,7 @@ pub mod prelude { } pub struct PolylinePlugin; -pub const SHADER_HANDLE: Handle = weak_handle!("b180bfe9-10c8-48fe-b27a-dfa41436d7d0"); +pub const SHADER_HANDLE: Handle = uuid_handle!("b180bfe9-10c8-48fe-b27a-dfa41436d7d0"); impl Plugin for PolylinePlugin { fn build(&self, app: &mut bevy::prelude::App) { diff --git a/src/material.rs b/src/material.rs index db9669d..77ea074 100644 --- a/src/material.rs +++ b/src/material.rs @@ -24,7 +24,7 @@ use bevy::{ render_resource::{binding_types::uniform_buffer, *}, renderer::{RenderDevice, RenderQueue}, view::{ExtractedView, RenderVisibleEntities, ViewUniformOffset}, - Render, RenderApp, RenderSet, + Render, RenderApp, RenderSystems, }, }; use std::fmt::Debug; @@ -124,6 +124,7 @@ impl RenderAsset for GpuPolylineMaterial { polyline_material: Self::SourceAsset, _: AssetId, (device, queue, polyline_pipeline): &mut bevy::ecs::system::SystemParamItem, + _: Option<&Self>, ) -> Result> { let value = PolylineMaterialUniform { width: polyline_material.width, @@ -178,7 +179,10 @@ impl Plugin for PolylineMaterialPlugin { .add_render_command::() .init_resource::() .init_resource::>() - .add_systems(Render, queue_material_polylines.in_set(RenderSet::Queue)); + .add_systems( + Render, + queue_material_polylines.in_set(RenderSystems::Queue), + ); } } } @@ -237,8 +241,8 @@ impl RenderCommand

for SetPolylineViewBindGroup #[inline] fn render<'w>( _item: &P, - (view_uniform, mesh_view_bind_group): ROQueryItem<'w, Self::ViewQuery>, - _entity: Option>, + (view_uniform, mesh_view_bind_group): ROQueryItem<'w, '_, Self::ViewQuery>, + _entity: Option>, _param: SystemParamItem<'w, '_, Self::Param>, pass: &mut TrackedRenderPass<'w>, ) -> RenderCommandResult { @@ -255,8 +259,8 @@ impl RenderCommand

for SetMaterialBindGroup fn render<'w>( _item: &P, - _view: ROQueryItem<'w, Self::ViewQuery>, - material_handle: Option>, + _view: ROQueryItem<'w, '_, Self::ViewQuery>, + material_handle: Option>, materials: SystemParamItem<'w, '_, Self::Param>, pass: &mut TrackedRenderPass<'w>, ) -> RenderCommandResult { @@ -297,7 +301,7 @@ pub fn queue_material_polylines( .id::(); for (view, visible_entities, msaa) in &views { - let inverse_view_matrix = view.world_from_view.compute_matrix().inverse(); + let inverse_view_matrix = view.world_from_view.to_matrix().inverse(); let inverse_view_row_2 = inverse_view_matrix.row(2); let mut polyline_key = PolylinePipelineKey::from_msaa_samples(msaa.samples()); diff --git a/src/polyline.rs b/src/polyline.rs index 20ea7b3..4c33bc7 100644 --- a/src/polyline.rs +++ b/src/polyline.rs @@ -1,5 +1,6 @@ use crate::material::PolylineMaterialHandle; use bevy::{ + camera::{self, visibility::VisibilityClass}, ecs::{ query::ROQueryItem, system::{ @@ -7,6 +8,7 @@ use bevy::{ SystemParamItem, }, }, + mesh::VertexBufferLayout, prelude::*, reflect::TypePath, render::{ @@ -16,8 +18,8 @@ use bevy::{ render_resource::{binding_types::uniform_buffer, *}, renderer::RenderDevice, sync_world::{RenderEntity, SyncToRenderWorld}, - view::{self, ViewUniform, ViewUniforms, VisibilityClass}, - Extract, Render, RenderApp, RenderSet, + view::{ViewUniform, ViewUniforms}, + Extract, Render, RenderApp, RenderSystems, }, }; @@ -43,8 +45,8 @@ impl Plugin for PolylineRenderPlugin { .add_systems( Render, ( - prepare_polyline_bind_group.in_set(RenderSet::PrepareBindGroups), - prepare_polyline_view_bind_groups.in_set(RenderSet::PrepareBindGroups), + prepare_polyline_bind_group.in_set(RenderSystems::PrepareBindGroups), + prepare_polyline_view_bind_groups.in_set(RenderSystems::PrepareBindGroups), ), ); } @@ -70,7 +72,7 @@ pub struct Polyline { #[derive(Debug, Clone, Default, Component)] #[require(SyncToRenderWorld, VisibilityClass)] -#[component(on_add = view::add_visibility_class::)] +#[component(on_add = camera::visibility::add_visibility_class::)] pub struct PolylineHandle(pub Handle); impl RenderAsset for GpuPolyline { @@ -82,6 +84,7 @@ impl RenderAsset for GpuPolyline { polyline: Self::SourceAsset, _: AssetId, render_device: &mut bevy::ecs::system::SystemParamItem, + _: Option<&Self>, ) -> Result> { let vertex_buffer_data = bytemuck::cast_slice(polyline.vertices.as_slice()); let vertex_buffer = render_device.create_buffer_with_data(&BufferInitDescriptor { @@ -127,11 +130,11 @@ pub fn extract_polylines( if !inherited_visibility.get() || !view_visibility.get() { continue; } - let transform = transform.compute_matrix(); + let transform = transform.to_matrix(); values.push(( entity, ( - PolylineHandle(handle.0.clone_weak()), + PolylineHandle(handle.0.clone()), PolylineUniform { transform }, ), )); @@ -221,7 +224,7 @@ impl SpecializedRenderPipeline for PolylinePipeline { RenderPipelineDescriptor { vertex: VertexState { shader: self.shader.clone(), - entry_point: "vertex".into(), + entry_point: Some("vertex".into()), shader_defs: shader_defs.clone(), buffers: vec![vertex_layout.clone(), { vertex_layout.attributes[0].shader_location = 1; @@ -231,7 +234,7 @@ impl SpecializedRenderPipeline for PolylinePipeline { fragment: Some(FragmentState { shader: self.shader.clone(), shader_defs, - entry_point: "fragment".into(), + entry_point: Some("fragment".into()), targets: vec![Some(ColorTargetState { format, blend, @@ -370,8 +373,8 @@ impl RenderCommand

for SetPolylineBindGroup #[inline] fn render<'w>( _item: &P, - _view: ROQueryItem<'w, Self::ViewQuery>, - polyline_index: Option>, + _view: ROQueryItem<'w, '_, Self::ViewQuery>, + polyline_index: Option>, bind_group: SystemParamItem<'w, '_, Self::Param>, pass: &mut TrackedRenderPass<'w>, ) -> RenderCommandResult { @@ -392,8 +395,8 @@ impl RenderCommand

for DrawPolyline { #[inline] fn render<'w>( _item: &P, - _view: ROQueryItem<'w, Self::ViewQuery>, - pl_handle: Option>, + _view: ROQueryItem<'w, '_, Self::ViewQuery>, + pl_handle: Option>, polylines: SystemParamItem<'w, '_, Self::Param>, pass: &mut TrackedRenderPass<'w>, ) -> RenderCommandResult {