BabylonJS/Babylon.js · error
GPU Particle System is not supported.
Error message
GPU Particle System is not supported.
What it means
GPUParticleSystem in Babylon.js requires WebGPU (or fallback GPU compute) support in the host environment. The quick-create extension checks the static GPUParticleSystem.IsSupported flag before constructing the system, alerts the user, and throws because it cannot create the requested GPU particle system. The error is intentional: silently falling back to a CPU system would change behavior the user explicitly asked for.
Source
Thrown at packages/dev/inspector-v2/src/extensions/quickCreate/particles.tsx:52
// Node Particle System state
const [nodeParticleSystemName, setNodeParticleSystemName] = useState("Node Particle System");
const [nodeParticleSystemSnippetId, setNodeParticleSystemSnippetId] = useState("");
const handleCreateCPUAsync = async () => {
return await new Promise<{ name: string }>((resolve) => {
setTimeout(() => {
const system = new ParticleSystem(cpuParticleSystemName, cpuParticleSystemCapacity, scene);
system.particleTexture = new Texture("https://assets.babylonjs.com/textures/flare.png", scene);
system.start();
resolve(system);
}, 0);
});
};
const handleCreateGPUAsync = async () => {
if (!GPUParticleSystem.IsSupported) {
alert("GPU Particle System is not supported.");
throw new Error("GPU Particle System is not supported.");
}
return await new Promise<{ name: string }>((resolve) => {
setTimeout(() => {
const system = new GPUParticleSystem(gpuParticleSystemName, { capacity: gpuParticleSystemCapacity }, scene);
system.particleTexture = new Texture("https://assets.babylonjs.com/textures/flare.png", scene);
system.start();
resolve(system);
}, 0);
});
};
const handleCreateNodeAsync = async () => {
let nodeParticleSet;
const snippetId = nodeParticleSystemSnippetId.trim();
if (snippetId) {
nodeParticleSet = await NodeParticleSystemSet.ParseFromSnippetAsync(snippetId);
nodeParticleSet.name = nodeParticleSystemName;
} else {View on GitHub (pinned to 0592b347b8)
Solutions
- Open the inspector in a WebGPU-capable browser (Chrome/Edge 113+, recent Safari with WebGPU enabled) with hardware acceleration on.
- Create a regular (CPU) ParticleSystem instead when GPUParticleSystem.IsSupported is false.
- Check GPUParticleSystem.IsSupported in your UI and hide/disable the GPU option when false.
- Ensure the engine is created with WebGPU (e.g. WebGPUEngine) so the feature is available at runtime.
Example fix
// before
const handleCreateGPUAsync = async () => {
const system = new GPUParticleSystem(name, { capacity }, scene);
...
};
// after
const handleCreateGPUAsync = async () => {
if (!GPUParticleSystem.IsSupported) {
const system = new ParticleSystem(name, capacity, scene); // CPU fallback
system.particleTexture = new Texture("https://assets.babylonjs.com/textures/flare.png", scene);
system.start();
return { name };
}
...
}; Defensive patterns
Strategy: fallback
Validate before calling
if (!GPUParticleSystem.IsSupported) {
console.warn("GPU particles unsupported, falling back to CPU ParticleSystem");
} Type guard
function canCreateGPUParticles(): boolean {
return typeof GPUParticleSystem !== "undefined" && GPUParticleSystem.IsSupported;
} Try / catch
try {
return await handleCreateGPUAsync();
} catch (e) {
if (e instanceof Error && e.message.includes("GPU Particle System is not supported")) {
return createCPUParticleSystemFallback(scene);
}
throw e;
} Prevention
- Feature-detect GPUParticleSystem.IsSupported before offering the GPU option in UI.
- Test the inspector in browsers without WebGPU.
- Initialize the engine with WebGPU support when GPU particles are required.
- Surface the alert to users instead of only console errors.
When it happens
Trigger: Clicking the GPU particle system quick-create action in the inspector while the page runs on a browser or device where GPUParticleSystem.IsSupported is false (no WebGPU, disabled feature, unsupported driver).
Common situations: Running the inspector in Safari or an older browser without WebGPU; testing on machines where WebGPU is disabled via flags or corporate policy; headless/CI environments with no GPU adapter; using a Babylon.js engine not initialized with WebGPU support.
Related errors
- Atmosphere is not supported on WebGL ${engine.version}.
- createComputeEffect: This engine does not support compute sh
- createComputePipelineContext: This engine does not support c
- computeDispatch: This engine does not support compute shader
- computeDispatchIndirect: This engine does not support comput
AI-assisted analysis of BabylonJS/Babylon.js@0592b347b8 (2026-08-30).
Data as JSON: /api/errors/27a5c2e15644f9e3.
Report an issue: GitHub.