Nightshade
A data-oriented 3D game engine written in Rust. Targets native (Windows, macOS, Linux) and the web via WebGPU. Ships a glTF-first PBR renderer with the full KHR extension set, a freecs-backed ECS, a retained-mode UI, and a browser-playable scene editor.
See the project README for screenshots, the live demo, and the project status.
Getting Started
Use the nightshade-template to scaffold a new project, or add nightshade to your Cargo.toml:
[]
= "0.14.0"
Hello, Nightshade
use *;
Features
default = ["engine", "wgpu"]. Opt in to more with cargo run --features <name>.
| Feature | What it adds |
|---|---|
engine |
Default. Runtime + asset loading + scene graph + picking + file dialogs + screenshot |
wgpu |
Default. GPU rendering (DX12 / Metal / Vulkan / WebGPU) |
full |
engine + wgpu + audio + physics + gamepad + navmesh + shell |
audio |
Audio playback (kira) |
physics |
3D physics (rapier3d) |
gamepad |
Controller input (gilrs) |
navmesh |
Runtime navmesh queries |
navmesh-bake |
Navmesh baking (rerecast) |
shell |
In-game shell commands |
gizmos |
Translate / rotate / scale gizmos |
debug_render |
Line / shape debug overlays |
file_watcher |
Live asset reload (notify) |
screenshot |
Capture viewport to PNG |
steam |
Steam integration (steamworks) |
tracing |
tracing-subscriber logging |
tracy |
Tracy profiler integration |
chrome |
chrome-trace profiler output |
windows-app-icon |
Embed app icon on Windows |
Browser Support
WebGPU is supported in:
- All chromium-based browsers (Chrome, Edge, Brave, Vivaldi, etc.)
- Firefox 141+
- Safari Technology Preview 18+
License
Dual-licensed under either of:
- MIT License (LICENSE-MIT or http://opensource.org/licenses/MIT)
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in nightshade by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.