diff --git a/assets/shaders/default.wgsl b/assets/shaders/default.wgsl index dd6f1e5..75962f9 100644 --- a/assets/shaders/default.wgsl +++ b/assets/shaders/default.wgsl @@ -2,6 +2,7 @@ @group(2) @binding(0) var u_time: f32; @group(2) @binding(1) var u_resolution: vec2; +@group(2) @binding(2) var u_mouse_position: vec2; @fragment fn fragment(mesh: VertexOutput) -> @location(0) vec4 { @@ -11,7 +12,7 @@ fn fragment(mesh: VertexOutput) -> @location(0) vec4 { let red = vec3(1, 0, 0); let blue = vec3(0, 0, 1.0); - let t = step(0.5, length(uv)); + let t = step(0.2 + u_mouse_position.x / u_resolution.x, length(uv)); let color = mix(red, blue, t); return vec4(color, 1); diff --git a/src/main.rs b/src/main.rs index f0c2299..bf00114 100644 --- a/src/main.rs +++ b/src/main.rs @@ -18,6 +18,7 @@ fn main() { ( material::update_material_time, systems::screen_resized, + systems::mouse_moved, systems::exit_app.run_if(input_just_pressed(KeyCode::Escape)), systems::toggle_fullscreen.run_if(input_just_pressed(KeyCode::F11)), ), diff --git a/src/material.rs b/src/material.rs index 9299eaf..fb7750f 100644 --- a/src/material.rs +++ b/src/material.rs @@ -13,6 +13,8 @@ pub struct CustomMaterial { pub time: f32, #[uniform(1)] pub resolution: Vec2, + #[uniform(2)] + pub mouse_position: Vec2, } pub fn update_material_time(mut materials: ResMut>, time: Res