Introducing q5.js WebGPU!
After a year in development, q5's WebGPU renderer is finally ready for public use.
On Monday (05/05/25 at 3pm 😯) I was thrilled to finally release q5.js v3, with its lightning fast WebGPU renderer! ⚡️
Please watch the special announcement video if you haven’t already. 😅
The Vision
Is it too much to ask for incredible performance and high ease of use from software libraries in 2025? I think not!
So when WebGPU was first introduced in Google Chrome 113, I fell off my toilet and drew this:
After spending my entire family fortune and working on this “summer project” for a year…
…my god has it been that long?
q5 WebGPU is finally here!
WebGPU availability
Check out this compatibility table to see the current state of web browser support for WebGPU, though whether a device can actually use WebGPU is more complicated.
If your computer runs Windows 10 and above or macOS 11 and above, it’s very likely that you can use WebGPU in Chrome or Edge!
It can be enabled under a flag in Safari on macOS and iOS. Fingers crossed that Apple enables it by default this September.
Recent Chromebooks that support Vulkan (including a few under $300) can also utilize it. See this supported device list.
WebGPU is enabled in Chrome 121 on devices running Android 12 and above powered by Qualcomm and ARM GPUs. WebGPU compatibility mode can be enabled under a flag in Chrome 135 on Android devices lacking support for Vulkan 1.1 and above.
Wait go back, what did I just say?
Enabled under a flag? Enabled under a flag?!
How could I have been so careless? Enabled under a flag?! Tom, how am I going to get teachers to use this? What was I thinking?!
I’m sure in 2035 WebGPU will be available at every school library but in 2025 it’s a little hard to come by. I’m sorry reader, but you may be stuck using the default renderer!
Using q5 WebGPU
Check if your device can run WebGPU.
If it does, you should be able to run the q5 v3 demos shown in the announcement video! ⚡️
Damn, damn! If not, you’ll see a warning in the OpenProcessing console and q5 will fallback to using its slower Canvas2D renderer (which is still faster than p5).
That’s actually pretty nice though! It means your students can start writing code intended to be run by q5’s WebGPU renderer, even if some of their devices don’t support WebGPU yet.
Better to be ahead of the curve than behind it right?
Support the Development of q5!
Let’s clear the air, q5.js started out as a fork of q5xjs v0 created by Ling Dong, whose name suspiciously lacks the letter Q. Alas, this project’s namesake is due to a lucky coincidence: that “q” is a mirrored “p”.
Despite all the hype around AI, one sadly can’t “vibe code” their way into crafting high quality, beginner friendly documentation based on eight years of teaching experience and also the fastest 2D graphics library for creative coding on the web. 🥲
Unfortunately for me, this project required a year of full-time work! 🫣
Sometimes when I hallucinate, experiment with an idea that doesn’t improve performance, I end up wasting not just a few minutes, but a whole week. I lack a word limit, which is why this article is so long, but it also enabled me to generate ~7000 lines of dense code for q5 v3.
The worst part though, is that in addition to computer equipment, internet access, and electricity, I regrettably require food, clean water, and housing with waste facilities.
Look, you can tell this article wasn’t written by AI because I just reminded you that humans 💩 and now I’m about to beg you for tokens— whoops I meant a token of gratitude for these efforts! 🥸
Please consider making a one-time donation or supporting my work on Patreon in celebration of this major version release. 🥳
Also if you make something cool with q5, please share it on the q5 community Discord! 👀