Skip to main content

Crate velyst

Crate velyst 

Source
Expand description

§Velyst

License Crates.io Downloads Docs CI Discord

Interactive Typst content creator using Vello and Bevy.

hello world

Associated example here!

§Quickstart

Velyst renders Typst content using Typst functions. This example shows you how to render a simple white box in the center of the screen. To get started rendering a simple box, create a function inside a .typ file:

#let main() = {
  place(center + horizon)[
    #box(width: 10em, height: 10em, fill: white)
  ]
}

Then, in your .rs file, load your Typst asset file and register your function.

use bevy::prelude::*;
use bevy_vello::prelude::*;
use velyst::prelude::*;

fn main() {
    App::new()
        .add_plugins((
            DefaultPlugins,
            bevy_vello::VelloPlugin::default(),
            velyst::VelystPlugin,
        ))
        .register_typst_func::<MainFunc>()
        .add_systems(Startup, setup)
        .run();
}

fn setup(mut commands: Commands, asset_server: Res<AssetServer>) {
    commands.spawn((Camera2d, VelloView));

    commands.spawn((
        VelystFunc::new(
            asset_server.load("typst/box.typ"),
            MainFunc::default(),
        ),
        WorldScene::default(),
    ));
}

typst_func!(
    "main",
    #[derive(Default)]
    struct MainFunc {},
);

Associated example here!

§Interactions

Velyst is also compatible with bevy_ui interactions.

game ui

Associated example here!

§Join the community!

You can join us on the Voxell discord server.

§License

velyst is dual-licensed under either:

This means you can select the license you prefer! This dual-licensing approach is the de-facto standard in the Rust ecosystem and there are very good reasons to include both.

Re-exports§

pub use bevy_vello;
pub use imaging;
pub use kanva;
pub use typst;

Modules§

asset
ext
func
prelude
renderer
world

Macros§

typst_func
Helper macro for creating Typst function struct with TypstFunc trait implementation.

Structs§

VelystPlugin
Plugin for loading and rendering Typst content.

Enums§

VelystSet
Velyst rendering pipeline.