Note that we will use Chrome Canary as our gauge browser for WebGPU features as other browsers are still lagging in term of feature support as of this writing (2023/11/08).
Make it work: Current status of the port
Most of the features of Babylon.js are now available in WebGPU. Here's a detailed list of what is not working / is partially working.
Features with incomplete support
- Point Cloud System
- WebGPU does not support a point size different from 1, so setting a value different from 1 for the point size won't be taken into account
Features not working because not implemented yet
- Support for triangle fan / line loop drawing mode
- WebGPU does not support those modes, we will need to emulate them with triangle strip and line strip
- Handle context lost/restore
- Multiview / WebXR
- Not implemented yet but not supported by Chrome / WebGPU specifications neither
Make it fast: Optimizations
The most important optimizations have now been done (see Optimizations), others could be considered:
- Use compute shaders to perform some conversions when reading data from buffers
- Use compute shaders to generate mipmaps
Other "nice-to-have" features
CreatePipelineAsyncfor asynchronous pipeline creations
Chrome Canary does not support all WebGPU features yet (or some others are not fully functional yet), so here are some caveats:
- GPU timing in the Inspector does not work because timestamp queries are currently disabled in Chrome. You can start Chrome with the
--enable-dawn-features=allow_unsafe_apisflag if you want to enable them. You can also add the
--enable-webgpu-developer-featuresflag for more precise timing.