fn main() -> Result<()> {
run_fn(Options::from_args(), |gpu, world, _rng| {
let mut program = ShaderProgram::new(&gpu, "pattern.frag")?;
let uniforms = Uniforms {
color: Hsv::new(0., 0.7, 0.7).into_rgb::<Srgb>().into_components(),
let shader = program.bind(uniforms);
Ok(move |ctx: Context, canvas: &mut Canvas| {
canvas.set_color(LinSrgb::new(1., 1., 1.));
canvas.paint(Filled(ctx.world));
canvas.set_shader(shader.clone());
let square = Ngon::square(world.center(), 200.);
canvas.paint(Filled(square));