update to bevy 0.18
This commit is contained in:
2190
Cargo.lock
generated
2190
Cargo.lock
generated
File diff suppressed because it is too large
Load Diff
@@ -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]
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
46
src/app.rs
46
src/app.rs
@@ -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>>) {
|
||||
|
||||
@@ -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,
|
||||
))
|
||||
|
||||
@@ -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())
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user