I’ve been experimenting with WebGPU and built a benchmark that simulates and renders up to *15,000,000 moving nodes(rectangles)* in real time in the browser.
Each node has its own position, velocity, size, and color. All simulation and rendering happens entirely on the GPU:
• GPU compute shader updates positions
• GPU performs visibility checks
• GPU maintains a visibility counter via atomics
• Indirect draw calls per chunk
• CPU does minimal work (just submits commands)
The demo starts at 50,000 nodes, but you can type any number up to ~15M and reset.
Warning:
This is a GPU stress test. Large node counts may cause slowdowns, thermal spikes, or browser crashes on some hardware.
Great! I pushed it to 120 million and my PC froze. There is diffing and culling but in this benchmark all nodes are drawn since they exist within screen bounds.
I’ve been experimenting with WebGPU and built a benchmark that simulates and renders up to *15,000,000 moving nodes(rectangles)* in real time in the browser.
Each node has its own position, velocity, size, and color. All simulation and rendering happens entirely on the GPU:
• GPU compute shader updates positions • GPU performs visibility checks • GPU maintains a visibility counter via atomics • Indirect draw calls per chunk • CPU does minimal work (just submits commands)
The demo starts at 50,000 nodes, but you can type any number up to ~15M and reset.
Warning: This is a GPU stress test. Large node counts may cause slowdowns, thermal spikes, or browser crashes on some hardware.
Demo: https://ajlaston.github.io/Nova-Web/
Code: https://github.com/ajlaston/Nova-Web
I’d be interested in performance reports across different GPUs, browsers, and platforms. Feedback on the architecture is welcome.
Tested it on a RX 7800XT on Chromium 142 (Windows) and it maintains 60fps up to ~6M nodes, very impressive.
Great! I pushed it to 120 million and my PC froze. There is diffing and culling but in this benchmark all nodes are drawn since they exist within screen bounds.