Comment on page
Introduction
- are repeatable with rng seeds managed for you
- can be reproduced at arbitrary resolutions without changing the scale of the composition
- leverage all of your hardware (You can shade each path with a different fragment shader!)
- you will rarely have to debug, thanks to Rust!
This guide covers valora in depth, but to start let's see some pixels! Keep the docs open to follow along.
cargo new art --bin && cd art
cargo install cargo-edit && cargo add valora
Put the following in your
main.rs
:use valora::prelude::*;
fn main() -> Result<()> {
run_fn(Options::from_args(), |_gpu, world, _rng| {
Ok(move |ctx: Context, canvas: &mut Canvas| {
canvas.set_color(LinSrgb::new(1., 1., 1.));
canvas.paint(Filled(ctx.world));
let max_radius = world.width / 3.;
let radius = ctx.time.as_secs_f32().cos().abs() * max_radius;
canvas.set_color(LinSrgb::new(1., 0., 0.));
canvas.paint(Filled(Ellipse::circle(world.center(), radius)));
})
})
}
Now execute:
cargo run --release
The first time, compilation will take a while. When valora starts, you should see a window with a red circle oscillating in size.

Your first valora result!
Last modified 3yr ago