# scena v1.1.0 Release Notes
Published: 2026-05-16.
Crates.io: <https://crates.io/crates/scena/1.1.0>.
docs.rs: <https://docs.rs/scena/1.1.0/scena/>.
## Scope
`scena` v1.1.0 is a browser-rendering reliability release. The public
`Backend::WebGl2` lane remains, but it now renders through wgpu + naga instead
of the deleted hand-written raw WebGL2 renderer. Native, WebGPU, and WebGL2 now
share the same renderer lifecycle, resource ownership, and WGSL shader source.
No public API changes in 1.1.0.
## Install
```bash
cargo add scena
```
Equivalent `Cargo.toml` entry:
```toml
[dependencies]
scena = "1.1"
```
## Fixed
- Repeated `Renderer::prepare()` calls on WebGL2 no longer retain the old raw
GL buffer, texture, and program cache. This closes the failure family where
WebGL2 prepare could grow GL resources until `GL_OUT_OF_MEMORY`, panic
through wasm, and poison subsequent wasm-bindgen mutable borrows.
- Firefox WebGL2 and Chromium WebGL2 now use the wgpu/naga shader path instead
of hand-written GLSL, so the ADR-0001 cross-stage uniform precision bug class
is removed from the render path.
- WebGL2 material sampling uses a small wgpu shader/layout shim with ordinary
`texture_2d` bindings. During the migration, wgpu 29's GL backend rendered
material `texture_2d_array` samples black in Chromium WebGL2; the shim keeps
the fallback inside wgpu without forking wgpu or naga.
## Removed
- Removed the hand-written WebGL2 renderer modules under `src/render/gpu`:
`webgl2.rs`, `webgl2_program.rs`, `webgl2_camera.rs`,
`webgl2_lighting.rs`, `webgl2_materials.rs`, `webgl2_texture_set.rs`, and
`webgl2_vertices.rs`.
- Removed raw WebGL2 renderer `web-sys` bindings from `Cargo.toml`.
## Regression coverage
- `cargo test` covers the shared wgpu shader/material path and confirms the
native/WebGPU material texture-array path remains intact.
- `cargo check --target wasm32-unknown-unknown --features browser-probe`
confirms the browser probe build compiles on wasm.
- `wasm-pack build --dev --target web --out-dir target/m6-browser-pkg .
--features browser-probe` built the v1.1.0 browser probe package.
- `SCENA_BROWSER_BACKENDS=webgl2 node tests/browser/m6_rust_wasm_renderer_probe.js`
passed with `m6-rust-wasm-renderer-probe` status `passed`, nonblack
canvas readback, model-viewer output, state/resource lifetime checks, and
WebGL2 capability tier `Low`.
- `SCENA_BROWSER_BACKENDS=webgpu node tests/browser/m6_rust_wasm_renderer_probe.js`
passed with `m6-rust-wasm-renderer-probe` status `passed`, renderer-owned
GPU-copy readback, model-viewer output, state/resource lifetime checks, and
WebGPU capability tier `Medium`.
- `xtask doctor` now forbids the retired raw WebGL2 renderer files and raw
render-path bindings instead of requiring them.
## Compatibility
Drop-in replacement for 1.0.2. No source-incompatible API changes. Same MSRV.
Same feature flags. The browser capability matrix was remeasured by the M6
probe; WebGL2 remains the low-tier compatibility lane while WebGPU remains the
medium-tier browser lane. WebGL2 rendering behavior may differ slightly because
the backend now follows the shared wgpu/naga path.