Follow-up: I've now exported the demo to web and measured it in a browser.
- Setup: Godot 4.7.2, Web export with the no-threads release template (so no COOP/COEP headers needed), Compatibility renderer (WebGL 2). Chromium-based browser on Windows, same i5-13450HX + RTX 4050 laptop.
- It runs. No errors or shader warnings in the console; flash and dissolve compile and apply under WebGL 2.
- CPU time per frame (effects looping non-stop, each frame stepping 1/60 s like a 60 fps game; desktop Compatibility in brackets, same method): 1 large explosion ~3 ms [1-2]; 5 ~6 ms [2.5-4]; 10 ~11 ms [4-6.5]; 30 ~23-30 ms [11-16]; 30 small impacts ~4-6 ms [2-3.5]. GDScript in WebAssembly came out about 2x the desktop cost on this machine.
- What that means: in a browser, up to roughly 10 large explosions on screen at once fit in a 60 fps frame, with not much room left for the rest of your game. 30 large ones at once don't (that's around 35-40 fps). Small impacts are cheap. Slower machines will be worse.
- Correction to my earlier numbers: the desktop figures I gave before (e.g. 30 explosions ~4-4.5 ms) came from a benchmark running at several hundred fps, which averages toward the cheap frames. At a fixed 60 fps step the same desktop is 11-16 ms for 30 explosions. Sorry about that; the numbers above use the corrected method.
- Not tested: Firefox, Safari, mobile browsers, integrated GPUs, and the threaded web template.
The free sample uses the same drawing code, so a quick web export of it in your project is the most reliable check.

