easygpu-lyon 0.5.0

A 2d graphics pipeline for easygpu utilizing lyon
Documentation
use easygpu::prelude::*;
use easygpu_lyon::{LyonPipeline, Shape, ShapeBuilder, Srgb, VertexShaderSource};
use lyon_tessellation::math::Point;
use lyon_tessellation::{FillOptions, FillTessellator};

mod sandbox;
use sandbox::Sandbox;

fn main() -> anyhow::Result<()> {
    CircleExample::run()
}

struct CircleExample {
    pipeline: LyonPipeline<Srgb>,
    shape: Shape,
}

impl Sandbox for CircleExample {
    fn create(renderer: &Renderer) -> Self {
        let pipeline = renderer.pipeline(Blending::default(), Srgb::sampler_format());

        let mut builder = ShapeBuilder::default();
        builder.default_color = [1., 0., 0., 1.];

        let mut tessellator = FillTessellator::new();

        tessellator
            .tessellate_circle(
                Point::new(50., 50.),
                25.,
                &FillOptions::default(),
                &mut builder,
            )
            .expect("Error tesselating circle");
        let shape = builder.prepare(renderer);

        Self { pipeline, shape }
    }

    fn pipeline(&self) -> &'_ LyonPipeline<Srgb> {
        &self.pipeline
    }

    fn render<'a>(&'a self, pass: &mut easygpu::wgpu::RenderPass<'a>) {
        pass.set_easy_pipeline(&self.pipeline);
        self.shape.draw(pass);
    }
}