> For the complete documentation index, see [llms.txt](https://paytonturnage.gitbook.io/valora/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://paytonturnage.gitbook.io/valora/master.md).

# Introduction

[Valora ](https://github.com/turnage/valora)is a brush for generative fine art. With valora you can write visual compositions that

* are repeatable with rng seeds managed for you
* can be reproduced at arbitrary resolutions without changing the scale of the composition
* have strict type-safe color semantics that won't surprise you in print (thanks to [palette](https://docs.rs/palette)!)
* 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](https://docs.rs/valora) open to follow along.

```bash
cargo new art --bin && cd art
cargo install cargo-edit && cargo add valora
```

Put the following in your `main.rs`:

```rust
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:

```bash
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!](/files/-LwFAnsGQHonl2ULMLOB)
