Skip to content

Latest commit

 

History

10 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

UltraRender

High-performance Lottie renderer written in Rust and powered by WebGPU.

UltraRender is designed for rendering many animated Lottie/JSON objects efficiently on a single GPU canvas, with a lightweight architecture focused on games, interactive interfaces and real-time applications.

Goals

  • Rust + WebGPU
  • Lottie / JSON animation support
  • Single canvas for multiple sprites
  • GPU draw batching
  • GPU-friendly tessellation
  • Scene tree
  • Visual effects
  • State machines
  • Native + WebAssembly targets
  • High sprite count
  • 100+ FPS target

Architecture

UltraRender takes inspiration from two mature rendering architectures:

skia Runtime

  • GPU rendering pipeline
  • Draw batching
  • Tessellation
  • Efficient animation runtime

ThorVG

  • Lottie parsing
  • Scene tree
  • Shapes and paths
  • Masks and clipping
  • Visual effects
Lottie JSON
    │
    ▼
  Parser
    │
    ▼
Scene Tree
    │
    ▼
Animation Runtime
    │
    ▼
Tessellation
    │
    ▼
Draw Batcher
    │
    ▼
WebGPU Renderer
    │
    ▼
   Canvas

Example

let mut renderer = UltraRenderer::new(&device, &queue);

let animation = renderer.load("character.json")?;

let sprite = renderer.spawn(animation);

sprite.set_position(320.0, 180.0);
sprite.play("idle");

renderer.render();

State Machine

sprite.set_bool("running", true);
sprite.set_number("speed", 2.0);
sprite.fire("attack");

State machines are evaluated by the runtime while rendering remains fully GPU-oriented.

Performance

UltraRender is designed around a shared rendering context instead of creating an isolated renderer for every animation.

1 WebGPU Device
1 Canvas
1 Render Pipeline

        │
        ├── Sprite
        ├── Sprite
        ├── Sprite
        ├── Sprite
        └── ...

Animations are grouped and submitted through batched GPU draw calls whenever possible.

The target is smooth rendering of large numbers of animated objects at 100+ FPS, depending on animation complexity and hardware.

Targets

Native
├── Windows
├── Linux
└── macOS

Web
└── WebAssembly + WebGPU

Status

🚧 Experimental

UltraRender is currently under active development.

Planned areas include:

  • Lottie parser
  • Shapes and paths
  • Gradients
  • Masks
  • Clipping
  • Trim paths
  • Blend modes
  • Text
  • Images
  • Effects
  • Draw batching
  • State machines
  • WASM bindings

License

TBD

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages