lyon_tessellation 0.6.2

A low level path tessellation library.
Documentation

Lyon Tessellation

This crate implements tools to compute the tessellation of 2d paths fill and stroke operations, in order to render them efficiently on the GPU.

Overview

The most interesting modules of this crate are:

  • path_fill - Implementing the tessellation of complex path fill operations.
  • path_stroke - Implementing the tessellation of complex path stroke operations.
  • geometry_builder - Which the above two are built on. It provides traits to facilitate generating arbitrary vertex and index buffers.

The tessellation pipeline

The figure above shows each step of the fill tessellation pipeline. Tessellating strokes works the same way using StrokeVertex instead of FillVertex.

The input: iterators

The path tessellators are not tied to a particular data structure. Instead they consume iterators of flattened path events. A Path struct in the crate lyon_path is provided for convenience (but is optional).

While the path tessellators use iterators, other more specific tessellation routines take simpler outputs like rectangles and circles. See the documentation of the basic_shapes module.

The output: geometry builders

The tessellators are parametrized over a type implementing the GeometryBuilder trait. This trait provides some simple methods to add vertices and triangles, without enforcing any particular representation for the resulting geometry. This is important because each application will usually want to work with its own vertex type tailored a certain rendering model.

Each application will implement the GeometryBuilder<Point> trait in order to generate vertex buffers and index buffers any type of vertex they want taking a 2d Point as input for each vertex. The structs VertexBuffers and geometry_buider::BuffersBuilder are provided for convenience. VertexBuffers<T> is contains a Vec<T> for the vertices and a Vec<u16> for the indices.

BuffersBuilder is generic over a VertexConstructor<InputVertex, OutputVertex> trait which creates the application's output vertices from the tessellator input vertices (either FillVertex or StrokeVertex).

Examples