A next-gen work-in-progress 2D and 3D graphical rendering engine written in Rust utilizing WGPU
Find a file
Lukas Weber 828ee940b1
All checks were successful
Forgejo-SakulFlee/Orbital/pipeline/head This commit looks good
Merge pull request 'chore(deps): update actions/cache action to v5.0.3' (#621) from renovate/actions-cache-5.x into main
Reviewed-on: #621
2026-02-03 03:56:40 +00:00
.cargo Installing correct GCC and cargo config 2025-07-08 04:24:19 +02:00
.github chore(deps): update actions/cache action to v5.0.3 2026-01-29 17:02:43 +00:00
.vscode Added Camera Rolling support 2025-09-18 00:02:11 +02:00
Android chore(deps): update plugin org.jetbrains.kotlin.android to v2.3.0 2025-12-16 13:37:44 +00:00
Assets Fixed binding layout 2025-09-24 05:04:56 +02:00
Examples Format 2025-09-25 22:55:01 +02:00
Images Added example images 2026-01-04 19:12:15 +01:00
Runtime Formatting 2025-12-17 01:58:58 +01:00
.gitignore Added InstancingTest files to .gitignore 2025-09-12 22:32:49 +02:00
Cargo.lock chore(deps): update rust crate log to v0.4.29 2025-12-03 02:56:23 +00:00
Cargo.toml Corrected workspace member import 2025-09-24 03:55:02 +02:00
Jenkinsfile Revert "Debugging" 2025-12-17 01:16:48 +01:00
LICENSE Material Shader finishing touches 2025-03-31 18:54:59 +02:00
README.md Update README.md 2026-01-04 22:12:35 +00:00
renovate.json Material Shader finishing touches 2025-03-31 18:54:59 +02:00

Orbital Engine Logo

🛰️ Orbital Engine & Framework

Orbital is a cross-platform real-time graphical rendering engine & framework written in Rust. The goal of this project is to bridge well established industry-standard techniques with upcoming (next-gen) and experimental techniques to form a robust new foundation for next-gen visual computing.

Showcase

glTF demo: Damaged Helmet
A
PBR Grid: Spheres PBR Grid: Cubes
A A

Core Features

Feature Description
PBR Rendering Physically Based Rendering with realistic material properties and lighting
Image-Based Lighting Advanced lighting using HDR environment maps for realistic reflections
GLTF 2.0 Support Full import capabilities for complex 3D scenes, materials, and animations
Cross-Platform Unified rendering across desktop platforms via WGPU abstraction
Modular Architecture Flexible element system with message-based communication
Modern Shaders WGSL-based shaders for cross-platform compatibility

Experiments

Experimental Concept Description
HJAA (Halton-Jitter Anti-Aliasing) Advanced spatial smoothing utilizing the Halton Sequence
IVXGI (Incremental Voxel-based Global Illumination) A evolution of Nvidia's VXGI for high performance dynamic lighting.

Important

Documentation for experimental features will be released once they have been fully validated in practical, non-theoretical environments.

Platform Compatibility

  • Windows: Full support
  • Linux: Full support
  • macOS: Full support
  • ⚠️ Web: Theoretically possible but not currently supported
  • ⚠️ Android: Works but requires frequent updates to keep compatible
  • iOS: Should work similarly to Android but cannot be verified

Getting Started

To explore the capabilities of the Orbital Engine, check out the examples in the Examples/ directory. These examples demonstrate various features of the engine including:

  • GLTF PBR Damaged Helmet: Example showcasing PBR rendering with a damaged helmet model
  • Instancing: Example demonstrating instanced rendering
  • PBR Grid: Example showing the PBR material system
  • Roll Camera: Example with camera controls
  • Skybox: Example showing environment mapping

To run an example, use:

cargo run --bin <example_name>

To use the engine in your own project, add the following to your Cargo.toml:

orbital = { path = "./Runtime" }

Engine Concepts

Elements

The primary way to add interactive objects to your world is through Elements. Elements are the core game objects that exist in the world and handle their own behavior. Each element can register itself with the world to define what resources it needs (models, cameras, etc.), and can respond to various events during the application lifecycle such as updates and messages from other elements.

Messaging System

Elements communicate with each other and the world through a message-passing system rather than shared memory. This ensures loose coupling between elements and enables flexible, modular game design. Rather than sharing memory or directly accessing other elements, elements send messages to communicate. This approach is easily scalable - tags can be used multiple times, so messages will be automatically sent to all elements with a matching tag.

World Architecture

The world manages resource stores (models, cameras, environments, lights), handles the asset import system, and creates the global bind group used by shaders. Resources follow a specific lifecycle involving creation, realization, caching, and cleanup.

History

The Orbital engine has a rich history spanning multiple iterations and rewrites. The project originally started as "Akimo" and was written in Java as a pure CPU renderer for 2D graphics. Over the years, it evolved through multiple iterations:

  • Akimo (Java): Started as a CPU-based 2D renderer, then upgraded to use LWJGL for OpenGL and Vulkan support
  • Akimo (C++): A complete rewrite in C++ with Vulkan bindings, still under the "Akimo" name
  • Orbital (Rust/Vulkan): A rewrite in Rust but still using Vulkan bindings
  • Orbital (Rust/WGPU/WGSL): The current iteration using Rust with WGPU and WGSL, moving away from GLSL to a more modern shader language

Each version learned from the previous ones, with the current implementation built in Rust leveraging the WGPU graphics API abstraction layer for cross-platform support.

License

This project is dual licensed in Rust's fashion:

For your own project you can chose whichever fits you better. For templates/examples we recommend to also dual-licensing.

We highly encourage everyone to share their sub-crates with the community so that others can benefit from it too!