scenix
Italian: scenix - scene, the stage on which everything appears.
scenix v0.6.0 is the Renderer release. It adds the first wgpu GPU layer while keeping the facade crate CPU-only by default.
This release ships:
scenix-math: vectors, matrices, quaternions, transforms, rays, bounds, planes, and coordinate helpers.scenix-core: typed IDs, color, errors, and shared traits.scenix-input: pointer and keyboard state.scenix-scene: scene node hierarchy, transform propagation, traversal, fog, sprites, and LOD helpers.scenix-camera: perspective, orthographic, and cube cameras, frustums, screen rays, orbit controls, and fly controls.scenix-mesh: geometry buffers, primitive generation, morph targets, instancing, and batching helpers.scenix-material: GPU-free material traits, pipeline keys, PBR, physical, toon, line, point, and custom shader materials.scenix-light: GPU-free light types, shadow configuration, and raw-sample spherical-harmonics light probes.scenix-texture: raw CPU texture data, samplers, atlases, video-frame updates, and RGBA8 mipmap generation.scenix-renderer: optionalwgpurenderer with headless/surface targets, renderer-owned resource registries, G-buffer/shadow targets, culling/sorting helpers, and pipeline caching.scenix: facade crate re-exporting CPU APIs by default and renderer APIs behindfeatures = ["renderer"].
File loaders, image decoding, post-processing, raycasting, helpers, WASM integration, and animato integration remain later roadmap milestones.
Installation
Most users should start with the facade crate:
[]
= "0.6"
Enable GPU rendering explicitly:
[]
= { = "0.6", = ["renderer"] }
Use focused crates directly when you only need one layer:
[]
= "0.6"
= "0.6"
= "0.6"
= "0.6"
= "0.6"
= "0.6"
= "0.6"
= "0.6"
= "0.6"
= "0.6"
For no_std-capable CPU crates:
[]
= { = "0.6", = false, = ["libm"] }
= { = "0.6", = false }
= { = "0.6", = false }
= { = "0.6", = false }
= { = "0.6", = false }
= { = "0.6", = false }
= { = "0.6", = false }
= { = "0.6", = false }
= { = "0.6", = false }
scenix-renderer is std + wgpu only.
Quick Start
Headless Renderer
use ;
# async
Textures And Camera
use ;
let pixels = vec!;
let mip_chain = generate.unwrap;
let texture = from_mips.unwrap;
let camera = new
.position
.target;
let ray = camera.screen_to_ray;
assert_eq!;
assert!;
Geometry And Scene Graph
use ;
let geometry = box_geometry;
let material_id = new;
let mesh = new;
let mut scene = new;
let node = scene.add;
assert!;
assert!;
Feature Flags
| Feature | Default | Description |
|---|---|---|
std |
yes | Enables standard-library conveniences for CPU crates. |
scene |
yes | Enables scenix-scene graph APIs from the facade crate. |
camera |
yes | Enables cameras, frustums, and controllers from the facade crate. |
mesh |
yes | Enables geometry and primitive APIs from the facade crate. |
material |
yes | Enables GPU-free material types and pipeline keys from the facade crate. |
light |
yes | Enables GPU-free light types, shadow config, and light probes from the facade crate. |
texture |
yes | Enables raw texture, sampler, atlas, video, and mipmap APIs from the facade crate. |
renderer |
no | Enables optional scenix-renderer/wgpu APIs from the facade crate. |
libm |
no | Uses libm for portable no_std trigonometry in scenix-math. |
serde |
no | Derives Serialize and Deserialize for public data types. |
approx |
no | Implements approx traits for math types. |
gpu |
no | Enables the GpuUpload trait in scenix-core. |
Workspace Layout
scenix/
├── crates/
│ ├── scenix-math/
│ ├── scenix-core/
│ ├── scenix-input/
│ ├── scenix-scene/
│ ├── scenix-camera/
│ ├── scenix-mesh/
│ ├── scenix-material/
│ ├── scenix-light/
│ ├── scenix-texture/
│ ├── scenix-renderer/
│ └── scenix/
├── examples/
│ ├── hello_cube.rs
│ ├── pbr_sphere.rs
│ ├── shadow_demo.rs
│ ├── textures_and_camera.rs
│ └── orbit_camera.rs
├── benches/
│ └── render_bench.rs
├── ARCHITECTURE.md
├── ROADMAP.md
├── CHANGELOG.md
└── README.md
Running Checks
SCENIX_RUN_GPU_TESTS=1 WGPU_BACKEND=vulkan
RUSTDOCFLAGS="-D warnings"
Roadmap
The long-term design remains the full scenix workspace described in ARCHITECTURE.md. Version 0.6.0 adds optional GPU rendering on top of the Foundation, Scene Graph, Geometry, Materials, Lights, Textures, and Camera APIs. The next milestone is v0.7.0 Loaders & Post-Processing.
See ROADMAP.md for the full versioned plan.
License
Licensed under either of:
at your option.