use radiant_utils as ru;
use radiant_rs::{Display, Renderer, Layer, Sprite, Color, Program, blendmodes, postprocessors};
use ru::Matrix;
pub fn main() {
let display = Display::builder().dimensions((640, 480)).vsync().title("Basic postprocessor example").build().unwrap();
let renderer = Renderer::new(&display).unwrap();
let sprite = Sprite::from_file(display.context(), r"examples/res/sprites/sparkles_64x64x1.png").unwrap();
let layer = Layer::new((320., 240.));
layer.set_blendmode(blendmodes::LIGHTEN);
sprite.draw(&layer, 0, (160., 120.), Color::WHITE);
sprite.draw(&layer, 0, (130., 100.), Color::RED);
sprite.draw(&layer, 0, (190., 100.), Color::GREEN);
sprite.draw(&layer, 0, (160., 155.), Color::BLUE);
let program = Program::from_string(display.context(), include_str!("res/effects/ripple.wgsl")).unwrap();
let ripple_effect = postprocessors::Basic::new(display.context(), program, (640, 480));
ru::renderloop(|frame| {
display.clear_frame(Color::BLACK);
layer.view_matrix().rotate_at((160., 120.), frame.delta_f32);
layer.model_matrix().rotate(frame.delta_f32 * 1.1);
renderer.postprocess(&ripple_effect, &blendmodes::LIGHTEN, || {
renderer.clear(Color::TRANSPARENT);
renderer.draw_layer(&layer, 0);
});
renderer.draw_layer(&layer, 0);
display.swap_frame();
!display.poll_events().was_closed()
});
}