Godot 4.7.1 WebGPU export templates, patch series 0001–0033.
These are the first published templates that render Forward+ in a browser. The previous release (p0014) could not — it predates the eleven patches that made the clustered renderer work.
What changed since p0014
Forward+ went from failing in shader translation to presenting a frame. Measured on an NVIDIA Tesla P40 through headed Chrome/WebGPU, Chariot exported with --rendering-method forward_plus:
| Renderer | forward_plus |
| Objects / primitives | 188 / 2,015,266 |
| Frame rate | 59 fps |
commandEncoder.finish invalid |
0 of 10,842 |
queue.submit rejected |
0 of 10,842 |
| Bind-group failure classes | 0 |
| Canvas dominant-colour fraction | 0.085 (a cleared buffer measures ≥0.95) |
| Adapter | isFallbackAdapter=false |
| wasm traps / device loss | 0 |
Screenshot: docs/images/forward-plus-first-frame.png
The eleven patches, each measured separately, are described in docs/architecture/webgpu-runtime-status.md.
What is NOT claimed
- Three validation errors remain — the
sampler2DMSclass inResolveShaderRDandSsEffectsDownsample. They are demonstrably not on the path to the presented frame: zero command buffers are rejected and the frame draws with them present. - One scene, one GPU, one browser. Chrome on Linux, Tesla P40. Safari, iOS, AMD, Intel and Apple GPUs are unverified.
- The D24 depth fallback and the float32→float16 view path are unexercised — this adapter exposes both features, so neither branch has ever run.
- No performance claim beyond the single figure above. Payload is 45.8 MiB uncompressed with a cold start in the tens of seconds; that work has not started.
Verify these bytes are what they say
godot.web.template_release.webgpu.zip
sha256 c1b72f8159086307d1702592a1a7329f16dcba7b39e04ea74a5db0591b061d23
godot.web.template_debug.webgpu.zip
sha256 895f76dec8df6a8191d54721e5f43700ec87d484a7e9b7c52dee3469fc0183ae
Both are recorded in engine/engine-lock.toml.
provenance.json records the series id sfwebgpu-1:73b9ad0408b9c011, a digest over the base commit and the ordered patch list. Recompute it from a fresh clone:
python tools/provenance/provenance.py idIdentify any Godot web build's lineage, including one you didn't produce:
python tools/provenance/provenance.py verify path/to/buildReproduce the Forward+ frame
git clone https://github.com/lxsolutions/studio-foundation && cd studio-foundation
# unpack both zips into engine/artifacts/templates/ (or run `just engine-build`)
cd tests/browser && npm ci && cd ../..
just verify-renderer --renderer forward_plusThat single command exports, serves, probes, traces bind-group and command-buffer
validity, and writes one evidence file. It exits 0 only when a non-fallback
GPU adapter, varied composited pixels and non-zero engine draw counters all
agree — 1 for a definite negative, 2 inconclusive, 3 if preconditions
are missing. A missing browser or absent templates is never reported as "does not
render".
render-probe reports rendered only when a non-fallback adapter, varied composited pixels and non-zero engine draw counters all agree. It is calibrated against three controls on the test host: a WebGPU clear-only page and an HTML-overlay page must both report not-rendered, and Chariot on Forward Mobile must report rendered.
If you reproduce this — or fail to — please open an issue. Independent confirmation on hardware we do not own is the most useful thing anyone can contribute right now.
Requirements
Chrome/Edge 113+ with WebGPU enabled, or another browser with WebGPU support. nothreads builds; no cross-origin isolation required.
Attribution
The WebGPU backend originated in dwalter/godotwebgpu (commit f329e39c), MIT. Godot Engine © 2014-present Godot Engine contributors and © 2007-2014 Juan Linietsky, Ariel Manzur, MIT. Full notice in NOTICE.md.