You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
WebGPU has an upcoming compatibility mode that allows it to run on older devices. Maybe three.js has an interest in supporting it?
It's available as of 2025-03-11 in Chrome Canary with the chrome://flags/#enable-unsafe-webgpu feature turned on.
Solution
There are many limits and restrictions for compatibility mode. You can read about them here.
The most common one, and semi easily fixed, is that code that generates mipmaps usually needs to be updated to work around some of the compatibility mode restrictions. There's an example of how to deal with generating mipmaps in compatibility mode in this article
Making that change in three.js alone will probably make the majority of three.js WebGPU examples run in compatibility mode.
I looked into trying to write a PR for three.js but it requires knowing how the texture will be used (2d, 2d-array, cube) and it wasn't clear if that info is available in the WebGPU backend at the moment. In any case, you can look at the solution linked and decide if you want to adapt three.js using a similar solution.
Alternatives
??? Fall back to WebGL2 like three.js does already? Compatibility mode, when it actually ships in a few months, should run on the majority of devices that currently run WebGL2. > 90% of them? Plus, you get compute shaders in WebGPU.
Additional context
The feature has been being worked on for 2 years and is close to shipping for some definition of close. It would be nice if three.js could support it.
The text was updated successfully, but these errors were encountered:
Description
WebGPU has an upcoming compatibility mode that allows it to run on older devices. Maybe three.js has an interest in supporting it?
It's available as of 2025-03-11 in Chrome Canary with the
chrome://flags/#enable-unsafe-webgpu
feature turned on.Solution
There are many limits and restrictions for compatibility mode. You can read about them here.
The most common one, and semi easily fixed, is that code that generates mipmaps usually needs to be updated to work around some of the compatibility mode restrictions. There's an example of how to deal with generating mipmaps in compatibility mode in this article
Making that change in three.js alone will probably make the majority of three.js WebGPU examples run in compatibility mode.
I looked into trying to write a PR for three.js but it requires knowing how the texture will be used (2d, 2d-array, cube) and it wasn't clear if that info is available in the WebGPU backend at the moment. In any case, you can look at the solution linked and decide if you want to adapt three.js using a similar solution.
Alternatives
??? Fall back to WebGL2 like three.js does already? Compatibility mode, when it actually ships in a few months, should run on the majority of devices that currently run WebGL2. > 90% of them? Plus, you get compute shaders in WebGPU.
Additional context
The feature has been being worked on for 2 years and is close to shipping for some definition of close. It would be nice if three.js could support it.
The text was updated successfully, but these errors were encountered: