Build WebGPU apps with PlayCanvas
blog.playcanvas.com
blog.playcanvas.com
https://simplystream.com/demos
Edit: These demo should load faster, but use WebGL:
The car configurator demo loads a 117 MBytes WASM blob and then hundreds of tiny files between a few hundred bytes to a few KBytes, both extremes are worst case for a web application, it's quite hilarious really.
The demo didn't finish loading while writing this comment, and it doesn't look like the loading of those tiny files will ever end...
I have higher hopes for the web people (like PlayCanvas, Babylon, threejs, etc...) writing a proper WASM game engine by "scaling up" their experience of building browser rendering engines, than the traditional "native game engine" people "scaling down" to web requirements (especially when it comes to time needed to start into the game - the entire asset loading system of native engines needs to be rebuilt from scratch for this).
In regards to downloading assets, we've built out an asset streaming system to address this. It allows you to dynamically load in just what you need, when you need it, while everything else that isn't needed right away can be fetched at runtime.
And your assumption is based on what exactly?
WASM + WebGPU don't magically make the whole game, its assets and the engine it uses appear on your computer.
In my case, several of the WebGPU demos on https://simplystream.com/demos fail (while keeping on falsely showing "Loading") with the error message (in DevTools):
"WebGPU requestDevice failed, trying low spec DOMException: Failed to execute 'requestDevice' on 'GPUAdapter': Required limit (64) is greater than the supported limit (32)."
I can't imagine it being good in a web scenario where you can't even precompile.
I guess it still needs work. It's not even available yet on Firefox, but I expected Chrome to work at the very least.
Edit: oh, GPU support doesn't work on Linux, that explains the weirdness. Guess I'll wait for either Firefox or Chrome to release their final releases before I start experimenting with this!
Edit. Car config the same
Every time I've taken a look at this engine it has always felt very limited. And with a $15/month subscription just to be able to create private projects I just can't justify it personally. I would love to be convinced otherwise though.
- You're locked into an online IDE if you want to use the PlayCanvas editor (which is the main selling point).
- Third-party dependencies are hard to integrate (for the online editor).
- You can't use different JavaScript languages (again due to the editor).
- I've seen lots of minor version changes that break too many things (not very stable).
- The editor had some major UI bugs back then (and probably still does).
Pros:
- Web-first library.
- Unity-like editor.
- Easy to debug/access things with only a link.
- Recently started to support WebGPU.
I've used ThreeJS, PlayCanvas, and BabylonJS in serious projects. I've concluded that BabylonJS is my go-to web-based 3D library from now on.
(Disclaimer, I used to work at PlayCanvas and still manage the Discord)
Just to help feedback on some points:
- ES6 Modules and NPM support is actively being worked on and should be ready by end of year
- Typescript support will follow after that
(Mark who wrote this now works at PlayCanvas https://forum.playcanvas.com/t/playbuild-a-compiler-and-pack...)
- If an minor engine release breaks existing project, the editor supports running and building with the last minor and patch release. Minor releases should never break existing projects unknowningly (shader chunks was the last (and painful) known big breaking change). The PlayCanvas team are usually pretty good at dealing with reported minor version breakages.
If you do take on another web 3D project after this work is done, hopefully this will help with reconsideration :)
See offline renders like OTOY, that make use of CUDA.
However we could already have gotten them via WebGL Compute, as they are part of OpenGL ES, had its implementation not been sabotaged.
https://github.com/9ballsyndrome/WebGL_Compute_shader
https://registry.khronos.org/webgl/specs/latest/2.0-compute/
Developing offline with the engine-only (https://github.com/playcanvas/engine) is obviously an option, but I wouldn't hold your breath for an offline editor.
You can produce some great stuff but there are many dev-exp headaches
- ES6 Modules and NPM support is actively being worked on and should be ready by end of year
- Typescript support will follow after that
(Mark who wrote this now works at PlayCanvas https://forum.playcanvas.com/t/playbuild-a-compiler-and-pack...)