scenix
Italian: scenix - scene, the stage on which everything appears.
scenix v0.7.0 is the Loaders & Post-Processing release. It adds CPU-side asset loading and an optional wgpu post-processing stack while keeping the facade crate CPU-authoring defaults unchanged.
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-loader: optional glTF/GLB, OBJ/MTL, STL, PNG/JPEG/WebP, KTX2, HDR/EXR, and path-cache loaders that output CPU-side scenix data.scenix-renderer: optionalwgpurenderer with headless/surface targets, renderer-owned registries, G-buffer/shadow targets, culling/sorting helpers, and pipeline caching.scenix-post: optionalwgpufull-screen post stack with bloom, SSAO, tonemap, FXAA, TAA, SMAA, depth of field, fog, outline, and motion blur passes.scenix: facade crate re-exporting CPU APIs by default, loader APIs behindfeatures = ["loader"], and GPU APIs behindfeatures = ["renderer", "post"].
Raycasting, helpers, WASM integration, and animato integration remain later roadmap milestones.
Installation
Most users should start with the facade crate:
[]
= "0.7"
Enable CPU asset loading:
[]
= { = "0.7", = ["loader"] }
Enable GPU rendering and post-processing:
[]
= { = "0.7", = ["renderer", "post"] }
Use focused crates directly when you only need one layer:
[]
= "0.7"
= "0.7"
= "0.7"
= "0.7"
= "0.7"
= "0.7"
= "0.7"
= "0.7"
= "0.7"
= "0.7"
= "0.7"
= "0.7"
For no_std-capable CPU crates:
[]
= { = "0.7", = false, = ["libm"] }
= { = "0.7", = false }
= { = "0.7", = false }
= { = "0.7", = false }
= { = "0.7", = false }
= { = "0.7", = false }
= { = "0.7", = false }
= { = "0.7", = false }
= { = "0.7", = false }
scenix-loader, scenix-renderer, and scenix-post are std crates.
Quick Start
Load glTF And Render Headless
use ;
# async
Post-Processing Stack
use ;
# async
Texture 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!;
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. |
loader |
no | Enables optional scenix-loader asset loading APIs from the facade crate. |
renderer |
no | Enables optional scenix-renderer/wgpu APIs from the facade crate. |
post |
no | Enables optional scenix-post APIs and renderer post-stack integration. |
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-loader/
│ ├── scenix-renderer/
│ ├── scenix-post/
│ └── scenix/
├── examples/
│ ├── gltf_scene.rs
│ ├── post_processing.rs
│ ├── hello_cube.rs
│ ├── pbr_sphere.rs
│ ├── shadow_demo.rs
│ ├── textures_and_camera.rs
│ └── orbit_camera.rs
├── benches/
│ ├── loader_bench.rs
│ ├── post_bench.rs
│ └── 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.7.0 adds optional CPU loaders and optional GPU post-processing on top of the renderer. The next milestone is v0.8.0 Raycasting & Helpers.
See ROADMAP.md for the full versioned plan.
License
Licensed under either of:
at your option.