🖋️
valora
  • Introduction
  • Painting the Canvas
  • Path Creation
  • Path Manipulation
  • Custom Shaders
  • Being the Artist
  • Gallery
Powered by GitBook
On this page

Was this helpful?

Introduction

NextPainting the Canvas

Last updated 5 years ago

Was this helpful?

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 !)

  • 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 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.

Valora
palette
the docs
Your first valora result!