use bevy::prelude::*;
use bevy_wisp::prelude::*;
const SHADERS: &[&str] = &[
"wisp/test_persistent_buffer.wgsl",
"wisp/test_multi_pass_rendering.wgsl",
"wisp/test_inputs.wgsl",
"wisp/test_float.wgsl",
];
fn main() {
App::new()
.add_plugins((DefaultPlugins, WispPlugin))
.add_systems(Startup, setup)
.add_systems(Update, switch)
.run();
}
fn setup(mut commands: Commands) {
commands.spawn(Camera3d::default());
}
fn switch(
mut commands: Commands,
asset_server: Res<AssetServer>,
cameras: Query<Entity, With<Camera3d>>,
mut frame: Local<u32>,
) {
*frame += 1;
let Ok(camera) = cameras.single() else {
return;
};
if frame.is_multiple_of(20) {
let path = SHADERS[(*frame / 20) as usize % SHADERS.len()];
let wisp: Handle<Wisp> = asset_server.load(path);
commands.entity(camera).insert(WispHandle(wisp));
}
if frame.is_multiple_of(70) {
let path = SHADERS[(*frame / 70) as usize % SHADERS.len()];
asset_server.reload(path);
}
}