Skip to content

Commit 2dac617

Browse files
authored
Merge pull request #9 from johanhelsing/bevy-0.12
Port to Bevy 0.12
2 parents 3efab9c + 6da51f7 commit 2dac617

File tree

6 files changed

+58
-43
lines changed

6 files changed

+58
-43
lines changed

.github/workflows/ci.yml

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,6 @@ jobs:
1616

1717
- name: Install stable toolchain
1818
uses: dtolnay/rust-toolchain@stable
19-
with:
20-
toolchain: stable
2119

2220
- name: Cache
2321
uses: Swatinem/rust-cache@v2
@@ -34,8 +32,6 @@ jobs:
3432

3533
- name: Install stable toolchain
3634
uses: dtolnay/rust-toolchain@stable
37-
with:
38-
toolchain: stable
3935

4036
- name: Cache
4137
uses: Swatinem/rust-cache@v2

Cargo.toml

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,22 +7,22 @@ keywords = ["gamedev", "bevy", "noise", "pcg", "simplex_noise"]
77
license = "MIT"
88
name = "noisy_bevy"
99
repository = "https://github.com/johanhelsing/noisy_bevy"
10-
version = "0.4.0"
10+
version = "0.5.0"
1111

1212
[dependencies]
13-
bevy = { version = "0.11", features = ["bevy_asset", "bevy_render"], default-features = false }
13+
bevy = { version = "0.12", default-features = false, features = [
14+
"bevy_asset",
15+
"bevy_render"
16+
] }
1417

1518
[dev-dependencies]
16-
bevy = { version = "0.11", default-features = false, features = [
17-
"bevy_render",
19+
bevy = { version = "0.12", default-features = false, features = [
1820
"bevy_sprite",
19-
"bevy_asset",
2021
"bevy_winit",
21-
"filesystem_watcher",
2222
"x11", # github actions runners don't have libxkbcommon installed, so can't use wayland
2323
] }
2424
rand = "0.8"
25-
bevy_egui = {version = "0.21.0", default-features = false, features = ["default_fonts"]}
25+
bevy_egui = { version = "0.23", default-features = false, features = ["default_fonts"] }
2626
# bevy-inspector-egui = {version = "0.19.1", default-features = false}
27-
bevy_pancam = {version = "0.9", features = ["bevy_egui"] }
27+
bevy_pancam = { version = "0.10", features = ["bevy_egui"] }
2828
insta = "1.21"

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,8 @@ The `main` branch targets the latest bevy release.
6464

6565
|bevy|noisy_bevy|
6666
|----|----------|
67-
|0.11| 0.4, main|
67+
|0.12| 0.5, main|
68+
|0.11| 0.4 |
6869
|0.10| 0.3 |
6970
|0.9 | 0.2 |
7071
|0.8 | 0.1 |

assets/examples/asteroid_background.wgsl

Lines changed: 29 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,41 @@
1-
#import noisy_bevy fbm_simplex_2d_seeded
2-
#import bevy_sprite::mesh2d_bindings mesh
3-
#import bevy_sprite::mesh2d_vertex_output MeshVertexOutput
1+
#import noisy_bevy::fbm_simplex_2d_seeded
2+
#import bevy_sprite::mesh2d_functions::{
3+
get_model_matrix,
4+
mesh2d_position_local_to_clip,
5+
}
46

57
struct AsteroidMaterial {
68
params: vec4<f32>
79
}
810

9-
@group(1) @binding(0)
10-
var<uniform> material: AsteroidMaterial;
11+
@group(1) @binding(0) var<uniform> material: AsteroidMaterial;
12+
13+
struct Vertex {
14+
@builtin(instance_index) instance_index: u32,
15+
@location(0) position: vec3<f32>,
16+
@location(1) blend_color: vec4<f32>,
17+
};
18+
19+
struct VertexOutput {
20+
@builtin(position) clip_position: vec4<f32>,
21+
@location(0) object_position: vec2<f32>,
22+
};
23+
24+
@vertex
25+
fn vertex(vertex: Vertex) -> VertexOutput {
26+
var out: VertexOutput;
27+
// Project the world position of the mesh into screen position
28+
let model = get_model_matrix(vertex.instance_index);
29+
out.clip_position = mesh2d_position_local_to_clip(model, vec4<f32>(vertex.position, 1.0));
30+
out.object_position = vertex.position.xy;
31+
return out;
32+
}
1133

1234
@fragment
1335
fn fragment(
14-
vertex_output: MeshVertexOutput,
36+
vertex_output: VertexOutput,
1537
) -> @location(0) vec4<f32> {
16-
// perf: better to do in vertex shader!
17-
var p = vertex_output.world_position.xy - vec2(mesh.model[3].x, mesh.model[3].y); // ignoring rotation
38+
var p = vertex_output.object_position;
1839
let params = material.params;
1940
let freq_scale = params.x;
2041
let amp_scale = params.y;

examples/asteroids.rs

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,6 @@
1-
use std::time::Duration;
2-
31
use bevy::{
4-
asset::ChangeWatcher,
52
math::{vec2, vec4},
63
prelude::*,
7-
reflect::{TypePath, TypeUuid},
84
render::{camera::ScalingMode, render_resource::AsBindGroup},
95
sprite::{Material2d, Material2dPlugin, MaterialMesh2dBundle},
106
};
@@ -17,10 +13,7 @@ fn main() {
1713
.register_type::<AsteroidParams>()
1814
.insert_resource(ClearColor(Color::BLACK))
1915
.add_plugins((
20-
DefaultPlugins.set(AssetPlugin {
21-
watch_for_changes: ChangeWatcher::with_delay(Duration::from_millis(200)),
22-
..default()
23-
}),
16+
DefaultPlugins,
2417
NoisyShaderPlugin,
2518
PanCamPlugin::default(),
2619
Material2dPlugin::<AsteroidBackgroundMaterial>::default(),
@@ -40,14 +33,16 @@ fn setup(mut commands: Commands) {
4033
commands.spawn(AsteroidBundle::default());
4134
}
4235

43-
#[derive(AsBindGroup, TypeUuid, Clone, TypePath)]
44-
#[uuid = "1e449d2e-6901-4bff-95fa-d7407ad62b58"]
36+
#[derive(Asset, AsBindGroup, Reflect, Debug, Clone)]
4537
struct AsteroidBackgroundMaterial {
4638
#[uniform(0)]
4739
params: Vec4,
4840
}
4941

5042
impl Material2d for AsteroidBackgroundMaterial {
43+
fn vertex_shader() -> bevy::render::render_resource::ShaderRef {
44+
"examples/asteroid_background.wgsl".into()
45+
}
5146
fn fragment_shader() -> bevy::render::render_resource::ShaderRef {
5247
"examples/asteroid_background.wgsl".into()
5348
}
@@ -79,7 +74,8 @@ struct AsteroidBundle {
7974
transform: Transform,
8075
global_transform: GlobalTransform,
8176
visibility: Visibility,
82-
computed_visibility: ComputedVisibility,
77+
view_visibility: ViewVisibility,
78+
inherited_visibility: InheritedVisibility,
8379
params: AsteroidParams,
8480
}
8581

@@ -90,8 +86,9 @@ impl Default for AsteroidBundle {
9086
transform: default(),
9187
global_transform: default(),
9288
visibility: default(),
93-
computed_visibility: default(),
9489
params: default(),
90+
view_visibility: default(),
91+
inherited_visibility: default(),
9592
}
9693
}
9794
}

src/lib.rs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
#![doc = include_str!("../README.md")]
33

44
use bevy::{
5-
asset::HandleId,
5+
asset::load_internal_asset,
66
math::{vec2, vec3, vec4, Vec2Swizzles, Vec3Swizzles, Vec4Swizzles},
77
prelude::*,
88
};
@@ -18,18 +18,18 @@ pub struct NoisyShaderPlugin;
1818

1919
impl Plugin for NoisyShaderPlugin {
2020
fn build(&self, app: &mut App) {
21-
app.add_systems(Startup, load_shaders);
21+
// workaround: embedded_asset is broken in bevy 0.12.0
22+
load_internal_asset!(
23+
app,
24+
NOISY_SHADER_HANDLE,
25+
"../assets/noisy_bevy.wgsl",
26+
Shader::from_wgsl
27+
);
2228
}
2329
}
2430

25-
fn load_shaders(mut shaders: ResMut<Assets<Shader>>) {
26-
let shader = Shader::from_wgsl(
27-
include_str!("../assets/noisy_bevy.wgsl",),
28-
"noisy_bevy.wgsl",
29-
);
30-
let handle_id = HandleId::random::<Shader>();
31-
shaders.set_untracked(handle_id, shader);
32-
}
31+
const NOISY_SHADER_HANDLE: Handle<Shader> =
32+
Handle::weak_from_u128(224136012015454690045205738992444526155);
3333

3434
fn permute_3(x: Vec3) -> Vec3 {
3535
(((x * 34.) + 1.) * x) % Vec3::splat(289.)

0 commit comments

Comments
 (0)