# Platforms
`scena` is designed for native, browser, WASM, and headless rendering
workflows. The same application-level model can drive different targets through
the same `Scene`, `Assets`, and `Renderer` concepts.
## Supported targets
| Linux native/headless | CI rendering, server-side snapshots, native model viewers, Vulkan-capable hosts. |
| macOS Metal | Native model viewers and inspection tools on macOS. |
| Windows DX12 | Native model viewers and inspection tools on Windows. |
| Browser WebGPU | Modern browser rendering through Rust/WASM and WebGPU. |
| Browser WebGL2 | Compatibility browser rendering path. |
| `wasm32-unknown-unknown` | Web packaging and browser integration. |
| Headless CPU | Deterministic software-rendered output for tests, docs, and automation. |
## Native applications
Native hosts own their event loop and windowing integration. `scena` owns
renderer state and accepts surface events from the host.
Start with:
- `examples/native_window.rs`
- `examples/orbit_controls_native_adapter.rs`
## Browser applications
Browser hosts provide a canvas and drive rendering through WASM. WebGPU and
WebGL2 are represented as explicit backend choices so applications can report
or select capabilities. WebGL2 uses `wgpu::Backends::GL`, so shader compilation
and resource ownership stay on the shared wgpu/naga renderer path.
Start with:
- `examples/browser_canvas.rs`
- `examples/orbit_controls_browser_adapter.rs`
- [Browser guide](browser.md)
## Headless rendering
Headless rendering is useful for:
- CI screenshots,
- generated documentation images,
- regression tests,
- server-side previews,
- deterministic visual checks.
Start with:
- `examples/headless_ci.rs`
- [Headless rendering](headless-rendering.md)
## Feature flags
Optional platform and asset features are controlled through Cargo features. See
[Feature flags](feature-flags.md).
## Capability reports
Use renderer capability reports instead of guessing by platform name. A browser
can support WebGPU or fall back to WebGL2; a native system can expose different
adapter limits depending on hardware and drivers.
See [Capabilities](capabilities.md).