Requirements & Browser Support
Awaken runs entirely in a WebGPU-capable browser - this page explains what that means, which browser to prefer and why, and how optional GPU features unlock optional engine features.
The one hard requirement: WebGPU
Awaken's renderer is built on WebGPU, the modern browser graphics API. WebGPU is not optional the way WebGL fallbacks used to be - there is no software path. If the browser cannot give Awaken a GPU adapter, the editor cannot start and shows:
WebGPU not available. Use Chromium 113+ or Safari 18+.
That message comes straight from the engine's device init (initGPU in packages/render/src/device.ts), which checks for navigator.gpu before doing anything else.
Minimum versions:
| Browser | Minimum | Notes |
|---|---|---|
| Chrome / Edge (Chromium) | 113+ | Recommended. WebGPU on by default; supports in-place project save. |
| Safari | 18+ | WebGPU supported; cannot save projects in place (see below). |
| Firefox | Recent (WebGPU rollout) | Works for rendering; File System Access API is unavailable. |
You also need a machine with a GPU WebGPU can address - effectively any laptop or desktop from the last several years, integrated or discrete.
Why Chromium is recommended
Rendering works in any WebGPU browser, but project persistence does not. Awaken saves your project in place - writing meshes, textures, scenes, and scripts back to a folder on your disk - using the File System Access API. That API is currently a Chromium feature.
- In Chrome / Edge, choosing a folder once lets Awaken re-open and overwrite it later (Save Project with no re-prompt), and Awaken can offer to reopen your last project on load.
- In Safari / Firefox, that API is missing, so saving falls back to a normal browser download instead of an in-place write. You can still build, play, and export a
game.html- you just re-download the project file each time rather than saving in place.
See Saving & Opening Projects for exactly how each save path behaves.
GPU capabilities that unlock optional features
WebGPU has a small core feature set every device supports, plus optional features a device may expose. When Awaken initialises the GPU it opportunistically requests the optional features it can use, then records what it actually got in a GPUCaps object. Each capability gates a corresponding engine feature - if your GPU lacks it, Awaken runs fine without that feature; it just isn't offered.
| WebGPU feature | Unlocks in Awaken | If absent |
|---|---|---|
indirect-first-instance | GPU-driven culling - cull + indirect draws on the GPU (opt-in in Render Settings) | Awaken uses CPU octree/frustum culling |
texture-compression-bc | BC (DXT) texture compression at load - roughly 4× smaller albedo textures on desktop | Textures stay as uncompressed RGBA |
timestamp-query | Per-pass GPU timings in the viewport stats overlay (real milliseconds per render pass) | Overlay shows FPS / draw calls / triangles only |
maxStorageBuffersPerShaderStage (a limit, not a flag) | The compute-cull path needs ~6 storage buffers per stage; Awaken branches on this | Falls back if the limit is too low |
None of these are required to make or ship a game. They are performance and scale levers - the Performance Systems page explains when they matter (mostly for large imported scenes, not small hand-built ones).
Integrated vs discrete GPU (hybrid laptops)
WebGPU gives no way to enumerate GPUs - the only knob is a power preference. On a hybrid-graphics laptop:
high-performanceresolves to the discrete GPU (faster, more power).low-powerresolves to the integrated GPU (slower, cooler, longer battery).
Awaken probes both preferences at startup (probeAdapters). If they resolve to two genuinely different adapters - compared by name, and by a capability fingerprint when the browser hides the name - Awaken offers a GPU picker so you can choose. Your choice is saved in localStorage (awaken.gpu.powerPreference) and read on every launch; the default is high-performance (prefer the discrete GPU).
If both preferences resolve to the same adapter, there is only one GPU (or the OS forces one), so no picker appears - in that case only your OS/driver graphics settings can change which GPU the browser uses.
📸 Screenshot - save as img/guide-gpu-picker.png
The GPU picker on a hybrid-graphics laptop, showing the high-performance (discrete) and power-saving (integrated) options, with the current adapter name visible in the stats overlay.
The viewport stats overlay reports which adapter WebGPU actually chose (vendor / architecture, when the browser exposes it) - useful because a browser can hand back the integrated GPU even when you asked for high-performance.
How to check WebGPU is available
- Just open the editor. The simplest check is to visit the editor - if it loads to a 3D viewport, WebGPU works. If you get the "WebGPU not available" message, your browser or version doesn't support it.
- Browser diagnostics. In Chromium,
chrome://gpureports WebGPU status; look for WebGPU listed as Hardware accelerated. - A one-line console check. In the browser dev console,
!!navigator.gpureturnstruewhen the WebGPU entry point exists (a necessary, not sufficient, sign - the adapter request can still fail).
If WebGPU is present but the editor still won't start, see Troubleshooting & FAQ.