update to bevy 0.18

This commit is contained in:
2026-02-19 13:55:41 -05:00
parent b62acf3277
commit a10f1b69be
7 changed files with 1026 additions and 1241 deletions

2190
Cargo.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -4,9 +4,8 @@ version = "0.1.0"
edition = "2024"
[dependencies]
bevy = {version = "0.16.1", features = ["bevy_image", "file_watcher"]}
bevy-inspector-egui = "0.31.0"
iyes_perf_ui = "0.5.0"
bevy = {version = "0.18.0", features = ["bevy_image", "file_watcher"]}
bevy-inspector-egui = "0.36.0"
[lints.clippy]

View File

@@ -2,7 +2,7 @@
@group(2) @binding(0) var<uniform> sky_color: vec4<f32>;
@group(2) @binding(1) var<uniform> view: TracerView;
@group(2) @binding(2) var skybox_texture: texture_2d<f32>;
@group(2) @binding(2) var skybox_texture: texture_cube<f32>;
@group(2) @binding(3) var skybox_sampler: sampler;
@fragment
@@ -24,8 +24,8 @@ fn fragment(mesh: VertexOutput) -> @location(0) vec4<f32> {
var color = vec4<f32>(final_color, 1.0);
if hit_data.distance == 100.0 {
color = sky_color;
// color = textureSampleLevel(skybox_texture, skybox_sampler, vec3<f32>(0.0, 0.0, 1.0), 0, 0u);
// color = sky_color;
color = textureSample(skybox_texture, skybox_sampler, vec3<f32>(0.0, 0.0, 1.0));
}
return color;
}

View File

@@ -1,15 +1,8 @@
use bevy::{
asset::RenderAssetUsages,
camera::visibility::RenderLayers,
prelude::*,
render::{
render_resource::{
Extent3d, TextureDimension, TextureFormat, TextureUsages, TextureViewDescriptor, TextureViewDimension,
},
view::RenderLayers,
},
window::PrimaryWindow,
render::render_resource::{TextureViewDescriptor, TextureViewDimension},
};
use iyes_perf_ui::prelude::*;
use crate::{
components::rt::{RTCamera, RTDisplay},
@@ -35,15 +28,9 @@ impl Plugin for Blackhole {
app.init_state::<AssetLoad>();
app.add_systems(Startup, setup)
.add_systems(Update, asset_load_check.run_if(in_state(AssetLoad::Loading)))
// .add_systems(Update, prepare_skybox.run_if(in_state(AssetLoad::Init)))
.add_systems(Update, prepare_skybox.run_if(in_state(AssetLoad::Init)))
.add_systems(Last, asset_init.run_if(in_state(AssetLoad::Init)));
app.add_plugins(TracerPlugin);
//Perf UI
app.add_plugins(bevy::diagnostic::FrameTimeDiagnosticsPlugin::default())
.add_plugins(bevy::diagnostic::EntityCountDiagnosticsPlugin)
.add_plugins(bevy::diagnostic::SystemInformationDiagnosticsPlugin)
.add_plugins(PerfUiPlugin);
}
}
@@ -54,20 +41,11 @@ fn setup(
mut materials: ResMut<Assets<TracerMaterial>>,
mut meshes: ResMut<Assets<Mesh>>,
) {
commands.spawn((
PerfUiRoot::default(),
PerfUiEntryFPS::default(),
PerfUiEntryFPSWorst::default(),
PerfUiEntryFrameTime::default(),
PerfUiEntryFrameTimeWorst::default(),
));
let skybox_asset = asset_server.load("sky-array.png");
commands.spawn((
Name::new("Render Display"),
MeshMaterial2d(materials.add(TracerMaterial {
sky_color: LinearRgba::rgb(0.1, 0.0, 0.01),
skybox: Some(skybox_asset.clone()),
..default()
})),
RTDisplay,
@@ -104,17 +82,27 @@ fn asset_load_check(
}
}
fn prepare_skybox(skybox: Res<SkyboxAsset>, mut image_assets: ResMut<Assets<Image>>) {
fn prepare_skybox(
skybox: Res<SkyboxAsset>,
mut image_assets: ResMut<Assets<Image>>,
display: Single<&MeshMaterial2d<TracerMaterial>, With<RTDisplay>>,
mut materials: ResMut<Assets<TracerMaterial>>,
) {
let mut skybox_image = image_assets
.get(skybox.0.id())
.get_mut(skybox.0.id())
.expect("Skybox asset image does not exist")
.clone();
skybox_image.reinterpret_stacked_2d_as_array(skybox_image.height() / skybox_image.width());
skybox_image
.reinterpret_stacked_2d_as_array(skybox_image.height() / skybox_image.width())
.expect("Failed to re-interpret skybox");
skybox_image.texture_view_descriptor = Some(TextureViewDescriptor {
dimension: Some(TextureViewDimension::Cube),
..default()
});
image_assets.insert(skybox.0.id(), skybox_image);
let mat = materials
.get_mut(display.0.id())
.expect("Tracer Materials doesn't exist");
mat.skybox = Some(skybox.0.clone());
}
fn asset_init(mut load_state: ResMut<NextState<AssetLoad>>) {

View File

@@ -1,6 +1,6 @@
use app::Blackhole;
use bevy::prelude::*;
use bevy::window::PresentMode;
use bevy::{prelude::*, window::WindowResolution};
use bevy_inspector_egui::{bevy_egui::EguiPlugin, quick::WorldInspectorPlugin};
mod app;
@@ -19,7 +19,7 @@ fn main() {
primary_window: Some(Window {
title: NAME.into(),
name: Some(NAME.into()),
resolution: (1920., 1080.).into(),
resolution: WindowResolution::new(1920, 1080),
present_mode: PresentMode::AutoNoVsync,
..default()
}),
@@ -30,9 +30,7 @@ fn main() {
watch_for_changes_override: Some(true),
..Default::default()
}),
EguiPlugin {
enable_multipass_for_primary_context: true,
},
EguiPlugin::default(),
WorldInspectorPlugin::new(),
Blackhole,
))

View File

@@ -1,4 +1,4 @@
use bevy::{prelude::*, sprite::Material2dPlugin};
use bevy::{prelude::*, sprite_render::Material2dPlugin};
use crate::{
app::AssetLoad,
@@ -23,7 +23,7 @@ fn update_tracer_uniforms(
let (transform, cam) = rt_camera.into_inner();
let clip_from_view = cam.clip_from_view();
let world_from_clip = transform.compute_matrix() * clip_from_view.inverse();
let world_from_clip = transform.to_matrix() * clip_from_view.inverse();
let mat = materials
.get_mut(display.0.id())

View File

@@ -2,7 +2,7 @@ use bevy::{
prelude::*,
reflect::Reflect,
render::render_resource::{AsBindGroup, ShaderType},
sprite::Material2d,
sprite_render::Material2d,
};
use crate::SHADER_ASSET_PATH;
@@ -25,11 +25,7 @@ pub struct TracerView {
}
impl Material2d for TracerMaterial {
fn fragment_shader() -> bevy::render::render_resource::ShaderRef {
fn fragment_shader() -> bevy::shader::ShaderRef {
SHADER_ASSET_PATH.into()
}
fn alpha_mode(&self) -> bevy::sprite::AlphaMode2d {
bevy::sprite::AlphaMode2d::Opaque
}
}