Home
Softono
velyst

velyst

Open source Apache-2.0 Rust
229
Stars
9
Forks
14
Issues
2
Watchers
3 weeks
Last Commit

About velyst

Interactive Typst content creator using Vello and Bevy.

Platforms

Web Self-hosted

Languages

Rust

Links

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.