scena 1.1.0

A Rust-native scene-graph renderer with typed scene state, glTF assets, and explicit prepare/render lifecycles.
Documentation
# scena v1.0.0 Release Notes

Type: Release notes.

Published: 2026-05-14.


Crates.io: <https://crates.io/crates/scena/1.0.0>.

GitHub release: <https://github.com/johannesPettersson80/scena/releases/tag/v1.0.0>.

docs.rs: <https://docs.rs/scena/1.0.0/scena/>.

## Scope

`scena` is a Rust-native scene-graph renderer for model viewers, glTF/GLB
workflows, CAD-style inspection, industrial visualization, digital-twin UI,
native windows, browser canvases, and deterministic headless rendering.

The v1.0.0 API centers on `Scene`, `Assets`, `Renderer`, and `SceneImport`.
Applications own their event loop and host state; `scena` owns typed scene
data, asset loading, renderer preparation, drawing, diagnostics, and
rendered-output evidence.

## Install

Add the renderer library to an application:

```bash
cargo add scena
```

Equivalent `Cargo.toml` entry:

```toml
[dependencies]
scena = "1.0"
```

Install the bundled CLI tool:

```bash
cargo install scena
scena-convert --help
```

## Highlights

- Rust-native scene graph with typed keys for nodes, cameras, lights,
  renderables, instances, connectors, anchors, and imports.
- Explicit `prepare()` / `render()` lifecycle with structured errors instead
  of hidden upload, fetch, or shader-compilation work in the render call.
- glTF/GLB loading with scene import handles, animation clips, skinning,
  morph-target data, anchors, connector metadata, units, coordinate-system
  conversion, and structured extension diagnostics.
- PBR-oriented material model with color-management contracts, texture role
  metadata, KTX2 and meshopt feature paths, MikkTSpace tangent parity, and
  texture-array batching evidence.
- Native, browser, and headless paths with release-lane artifacts for Linux
  Vulkan, macOS Metal, Windows DX12, WebGPU, WebGL2, WASM, and headless 4K
  performance.
- Viewer helpers for headless and interactive glTF workflows, including
  camera framing, default camera/light/environment setup, diagnostics, and
  explicit scene/assets/renderer accessors.
- Public examples covering primitives, GLB viewing, picking and selection,
  instancing, labels/helpers, animation, native windows, browser canvas,
  headless CI, and industrial-style static scenes.

## Release Evidence

The v1.0.0 release workflow completed successfully:

<https://github.com/johannesPettersson80/scena/actions/runs/25877273460>

The release workflow passed:

- Linux native Vulkan rendered-output lane.
- macOS Metal rendered-output lane.
- Windows DX12 rendered-output lane.
- Browser WebGPU Rust/WASM rendered-output lane.
- Browser WebGL2 Rust/WASM rendered-output lane.
- `wasm32-unknown-unknown` build and size lane.
- Headless 4K performance lane.
- Release-readiness artifact staging.
- Clean `cargo publish --dry-run`.
- crates.io publish.
- GitHub release creation.

Crates.io published package metadata:

- crate: `scena`
- version: `1.0.0`
- license: `MIT OR Apache-2.0`
- rust-version: `1.93`
- edition: `2024`
- checksum:
  `4d7232b24512fcc1399dc9714591cc9a7be81bfa7c2b92f421b5d692cae4dcc5`

## Capability And Diagnostics Contract

Capabilities are reported per backend. A capability is `Supported` only when
the corresponding backend path has implementation and evidence; otherwise it
is reported as `Degraded`, `FeatureDisabled`, or a structured unsupported
state. This keeps feature claims aligned with release artifacts.

Renderer diagnostics expose structured errors, capability reports, adapter
reports, renderer statistics, debug overlays, and release evidence so
applications can distinguish unavailable features from renderer failures.

## Compatibility Notes

- `Renderer::prepare` is the synchronization point for scene, material,
  environment, target, and debug-overlay changes.
- `Renderer::render` expects a prepared scene and returns structured
  `RenderError::NotPrepared` reasons when preparation is stale.
- `SceneImport` is the canonical handle for imported glTF/GLB scene content,
  named nodes, anchors, connector metadata, bounds, and clips.
- `scena-convert` is included as the CLI entry point for conversion workflows.

## License

`scena` is licensed under either MIT or Apache-2.0.